【发布时间】:2018-08-17 20:30:19
【问题描述】:
我有这个代码
func main() {
router := mux.NewRouter()
router.HandleFunc("/", rootHandler)
router.HandleFunc("/xyz/{url}", urlHandler)
http.Handle("/", router)
log.Fatal(http.ListenAndServe(":8080", nil))
}
使用此网址:http://localhost:8080/xyz/https%3A%2F%2Fabc.no%2FJZ2las1o3Ct
mux 将重定向(301)到
http://localhost:8080/xyz/https:/abc.no/JZ2las1o3Ct
如果我将 %2F%2F 更改为只有一个 (%2F),我不会被重定向,并且转义字符保持转义。
我找到了对 router.SkipClean(true) 的引用,但 Mux 处理此问题的方式没有区别。
我想要的是 mux 变量url 应该保持https%3A%2F%2Fabc.no%2FJZ2las1o3Ct
【问题讨论】:
-
您可以使用查询参数而不是动态路径段。
-
解码url编码参数并在mux中使用它来设置整个url
-
或者如果你想让它成为一个路径段,你为什么不把它base64编码并解码回来?
-
你好@vedhavyas 我也说过同样的 url 已经结束编码所以我们只需要解码它。
-
@mkopriva 我正在重写现有服务,所以我无法更改路径