Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pelayan Web Go Saya Mengubah Hala Permintaan POST untuk DAPAT?

Mengapa Pelayan Web Go Saya Mengubah Hala Permintaan POST untuk DAPAT?

Susan Sarandon
Susan Sarandonasal
2024-11-28 02:13:12535semak imbas

Why is My Go Web Server Redirecting POST Requests to GET?

Go Web Server Mengubah Hala Secara Automatik Permintaan POST

Ramai pembangun telah menghadapi masalah di mana pelayan web Go mereka mengubah hala secara automatik permintaan POST, mengakibatkan yang tidak dijangka tingkah laku. Fenomena ini timbul apabila pelayan menerima permintaan POST untuk URL tertentu tetapi bertindak balas dengan kod status 301 (Dipindahkan Secara Kekal), mencetuskan permintaan GET berikutnya ke URL lain.

Untuk memahami punca utama, adalah penting untuk menyelidiki tingkah laku jenis http.ServeMux Go. Secara lalai, ServeMux akan mengubah hala secara automatik permintaan ke akar subpokok jika permintaan itu menyertakan garis miring di belakang dalam URL. Sebagai contoh, jika pengendali didaftarkan untuk "/myurl/", sebarang permintaan untuk "/myurl" (tanpa garis miring di belakang) akan diubah hala ke "/myurl/".

Dalam contoh yang disediakan, PHandler didaftarkan untuk mengendalikan permintaan kepada "/myurl/". Walau bagaimanapun, penyemak imbas pengguna diarahkan ke "/myurl" tanpa garis miring. Akibatnya, ServeMux mengesan percanggahan ini dan mengeluarkan ubah hala 301 ke URL yang betul, dengan berkesan menukar permintaan POST kepada permintaan GET.

Untuk menyelesaikan isu ini, pertimbangkan penyelesaian berikut:

  • Pastikan URL yang diakses oleh penyemak imbas anda sepadan dengan laluan berdaftar untuk pengendali. Dalam kes ini, halakan penyemak imbas ke "/myurl/" dan bukannya "/myurl".
  • Jika anda tidak memerlukan pengendali subtree tetapi semata-mata memerlukan pengendali untuk laluan tertentu, daftarkan pengendali hanya untuk itu laluan tanpa garis miring mengekor, seperti "http.HandleFunc("/myurl", PHandler)".
  • Daftar kedua-dua laluan kepada pengendali untuk mengendalikan kedua-dua "/myurl" dan "/myurl/". Gunakan fungsi "http.HandleFunc("/myurl/", PHandler)".

Ingat bahawa penyemak imbas biasanya tidak mengulangi permintaan POST selepas ubah hala untuk memelihara keselamatan data sensitif.

Atas ialah kandungan terperinci Mengapa Pelayan Web Go Saya Mengubah Hala Permintaan POST untuk DAPAT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn