当我的通配符参数中有双斜杠时,为什么 Gorilla mux 会重定向?
Why does Gorilla mux redirect when i have double slashes in my wildcard param?
这里是我的处理程序:
router.HandleFunc("/g/{gparam:.*}", MyHandler)
Bu 当我将“123://abc”之类的东西作为参数传递时,它会将 url 中的参数重定向并修改为“123:/abc”。
他们有办法避免这种情况吗?
将斜杠作为参数,可能是您的要求。您需要将斜杠转义为 %2F
.
这是预期的行为,并且是可配置的。默认情况下,Gorilla
mux 将进行路径清理,即为新路由器删除双斜杠等。您可以按原样保留双斜杠:
router.SkipClean(true)
SkipClean 文档说:
...
When true, if the route path is "/path//to", it will remain with the double slash. This is helpful if you have a route like: /fetch/http://xkcd.com/534/
这里是我的处理程序:
router.HandleFunc("/g/{gparam:.*}", MyHandler)
Bu 当我将“123://abc”之类的东西作为参数传递时,它会将 url 中的参数重定向并修改为“123:/abc”。
他们有办法避免这种情况吗?
将斜杠作为参数,可能是您的要求。您需要将斜杠转义为 %2F
.
这是预期的行为,并且是可配置的。默认情况下,Gorilla
mux 将进行路径清理,即为新路由器删除双斜杠等。您可以按原样保留双斜杠:
router.SkipClean(true)
SkipClean 文档说:
...
When true, if the route path is "/path//to", it will remain with the double slash. This is helpful if you have a route like:/fetch/http://xkcd.com/534/