私のハンドラ: ":/ ABC 123" それがURLでのparamをリダイレクトし、変更のparamとして: "// ABC 123"ワイルドカードパラメータで二重スラッシュを使用しているときにGorilla muxがリダイレクトするのはなぜですか?ここ
router.HandleFunc("/g/{gparam:.*}", MyHandler)
富栄私はのようなものを渡します。
これを避ける方法はありますか?
私のハンドラ: ":/ ABC 123" それがURLでのparamをリダイレクトし、変更のparamとして: "// ABC 123"ワイルドカードパラメータで二重スラッシュを使用しているときにGorilla muxがリダイレクトするのはなぜですか?ここ
router.HandleFunc("/g/{gparam:.*}", MyHandler)
富栄私はのようなものを渡します。
これを避ける方法はありますか?
これは意図した動作であり、設定可能です。デフォルトでは、Gorilla
マルチプレクサはパスのクリーニング、つまり新しいルータの二重スラッシュなどを削除します。
router.SkipClean(true)
SkipCleanドキュメントは言う:
ルートパスは "へ/パス//" であれば、それは、...
ときに真をであるとして、あなたは二重のスラッシュを残しすることができますダブルスラッシュのままになります。これは、次のようなルートがある場合に役立ちます。/fetch/http://xkcd.com/534/
paramとしてスラッシュを使用することが必要です。スラッシュを%2F
としてエスケープする必要があります。
スラッシュを '%2F'に変更して、gparamをエンコードする必要があります。 – balintant