2017-06-29 13 views
0

私のハンドラ: ":/ ABC 123" それがURLでのparamをリダイレクトし、変更のparamとして: "// ABC 123"ワイルドカードパラメータで二重スラッシュを使用しているときにGorilla muxがリダイレクトするのはなぜですか?ここ

router.HandleFunc("/g/{gparam:.*}", MyHandler) 

富栄私はのようなものを渡します。

これを避ける方法はありますか?

+0

スラッシュを '%2F'に変更して、gparamをエンコードする必要があります。 – balintant

答えて

2

これは意図した動作であり、設定可能です。デフォルトでは、Gorillaマルチプレクサはパスのクリーニング、つまり新しいルータの二重スラッシュなどを削除します。

router.SkipClean(true) 

SkipCleanドキュメントは言う:

ルートパスは "へ/パス/​​/" であれば、それは、...
ときに真をであるとして、あなたは二重のスラッシュを残しすることができますダブルスラッシュのままになります。これは、次のようなルートがある場合に役立ちます。/fetch/http://xkcd.com/534/

1

paramとしてスラッシュを使用することが必要です。スラッシュを%2Fとしてエスケープする必要があります。

関連する問題