【问题标题】:Receiving Golang GET request with # in the URL parameter在 URL 参数中接收带有 # 的 Golang GET 请求
【发布时间】:2021-12-25 03:39:03
【问题描述】:

我正在尝试为 shopify 创建一个履行应用程序,他们每小时向我的应用程序上的端点发送一次呼叫,其中包含他们需要我提供跟踪号的订单名称。

不幸的是,订单名称中有“#”(例如#1001.1)。当我收到这些调用时,查询参数在 # 处被截断,其余的查询字符串不再显示。当我从调用中删除 # 时(在测试时),整个查询字符串都通过了。

带#的

请求

GET http://localhost:4200/v1/fetch_tracking_numbers.json?order_names[]=#1001.1&order_names[]=#1002.1&order_names[]=#1003.2

服务器端记录的请求

GET http://localhost:4200/v1/fetch_tracking_numbers.json?order_names[]=

没有#的

请求

GET http://localhost:4200/v1/fetch_tracking_numbers.json?order_names[]=1001.1&order_names[]=1002.1&order_names[]=1003.2

服务器端记录的请求

GET http://localhost:4200/v1/fetch_tracking_numbers.json?order_names[]=1001.1&order_names[]=1002.1&order_names[]=1003.2

我正在使用基于 fasthttp 构建的 atreugo。

谢谢!

【问题讨论】:

  • 标准库 http 栈是如何处理这个问题的? fasthttp 速度很快,因为它采用了快捷方式。
  • Encode / Decode URLs。构建 URL 时,您应该始终正确编码原始字符串。
  • 啊,快捷方式很有意义。
  • 我实际上并没有对 URL 进行编码,我收到了来自 shopify 的电话。他们对其进行编码。 IDK 为什么他们需要使用名称而不是所有其他可能的 ID 来提供。
  • 服务器永远不应该接收未编码的#。它在客户端用作锚标识符,不随请求一起发送。任何接收它的服务器都应该只接收编码为%23 的它。听起来 Shopify 在他们的处理程序中有一个错误。

标签: go url parameters get fasthttp


【解决方案1】:

只想在这里回复更新。 我是个白痴。 Shopify 对其请求 URI 进行编码。

他们的文档误导了我,还有我的愚蠢。感谢所有试图提供帮助的人!

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多