Rumah > Artikel > pembangunan bahagian belakang > Mengapa Pelayan Web Go Saya Mengalihkan Permintaan POST ke `/myurl` ke `/myurl/`?
Go Web Server: Mysterious Redirect on POST Requests
Apabila membuat permintaan POST ke URL tertentu (/myurl), pembangun menghadapi masalah yang tidak dijangka tingkah laku: permintaan tidak sampai ke pelayan secara langsung. Sebaliknya, respons ubah hala 301 diterima, diikuti dengan permintaan GET kedua yang dikendalikan oleh pelayan.
Setelah menyiasat kod pelayan, nampaknya pengendali untuk laluan "/myurl/" didaftarkan melalui http.HandleFunc("/myurl/", PHandler). Walau bagaimanapun, apabila penyemak imbas membuat permintaan POST, ia menghala ke "/myurl" (tanpa garis miring di belakang).
Kunci untuk memahami isu ini terletak pada gelagat lalai pakej http dalam Go. Menurut dokumentasi untuk jenis http.ServeMux, garis miring mengekor pada laluan berdaftar mencetuskan ubah hala jika permintaan tiba tanpa garis miring mengekor. Ini bertujuan untuk memastikan permintaan dihalakan kepada pengendali yang sesuai.
Dalam kes ini, memandangkan pengendali didaftarkan untuk "/myurl/", permintaan penyemak imbas untuk "/myurl" tanpa garis miring mengekor menghasilkan ubah hala ke "/myurl/" dengan garis miring di belakang. Ini menerangkan pemerhatian bahawa permintaan itu tidak pernah mengenai pelayan secara langsung.
Untuk menyelesaikan isu ini, pembangun mempunyai beberapa pilihan:
Dengan melaksanakan salah satu daripada penyelesaian ini, pembangun boleh menghapuskan gelagat ubah hala yang tidak dijangka dan memastikan permintaan POST dikendalikan seperti yang diharapkan oleh pelayan web Go mereka.
Atas ialah kandungan terperinci Mengapa Pelayan Web Go Saya Mengalihkan Permintaan POST ke `/myurl` ke `/myurl/`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!