Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pelayan Web Go Saya Mengalihkan Permintaan POST ke `/myurl` ke `/myurl/`?

Mengapa Pelayan Web Go Saya Mengalihkan Permintaan POST ke `/myurl` ke `/myurl/`?

DDD
DDDasal
2024-11-22 22:38:24691semak imbas

Why Does My Go Web Server Redirect POST Requests to `/myurl` to `/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:

  1. Arahkan penyemak imbas ke laluan yang betul dengan garis miring " /myurl/".
  2. Daftar pengendali hanya untuk laluan tertentu tanpa garis miring mengekor, seperti http.HandleFunc("/myurl", PHandler).
  3. Daftar pengendali untuk kedua-dua laluan, membenarkan permintaan dengan dan tanpa garis miring.

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!

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