当我的通配符参数中有双斜杠时,为什么 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/