【问题标题】:Golang Gorilla Sends 301 For "//" URLsGolang Gorilla 为“//” URL 发送 301
【发布时间】:2019-05-07 23:01:01
【问题描述】:

我有两条路线配置如下

  • GET /api/store/{store_id}/books
  • GET /api/store/{store_id}

当第一个没有{store_id} 参数的URL 调用API 时,比如/api/store//books,Gorilla 会以某种方式向客户端发送301 /api/store/books。这引起了我的问题,因为它实际上匹配了第二条路线。 Gorilla 会将books 视为{store_id} 参数。

如何配置 Gorilla 在 URL 中接收 // 时返回 404 或其他错误代码?

我正在使用 Gorilla v1.7.0。

【问题讨论】:

  • 据我所知 go 用 / 在 url 中替换 //,所以你不能有一个空的 store_id
  • 如果你知道store_id 的模式,你可以添加它的正则表达式。例如,如果它只包含数字,那么您可以将路径更改为/api/store/{store_id:\d+}

标签: go gorilla


【解决方案1】:

默认情况下,mux 会清理 URL。您可以设置router.SkipClean(true) 参数来避免这种情况。

当为真时,如果路由路径是“/path//to”,它将保留双斜杠。如果您有这样的路线,这将很有帮助:/fetch/http://xkcd.com/534/

【讨论】:

    猜你喜欢
    • 2017-08-30
    • 2015-10-30
    • 2020-08-19
    • 1970-01-01
    • 2015-07-10
    • 2019-01-02
    • 2014-02-09
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多