You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang使用atreugo接收带#的URL参数GET请求内容被截断怎么解决

问题根本原因

URL 中的 # 是HTTP规范定义的片段标识符标识,所有标准HTTP客户端发起请求时,都会自动丢弃#及之后的所有内容,不会将这部分内容发送到服务端。你遇到的参数截断问题和你使用的atreugo、fasthttp框架无关,框架本身没有问题,也无法通过修改框架配置拿到本就没有被发送到服务端的内容。

解决方案

方案1(最优解):要求Shopify侧对参数做URL编码

要求Shopify在发送请求时,对order_names的参数值进行URL编码,将#转义为%23。转义后#不再作为片段标识符的标识,会作为普通参数值的一部分被发送到服务端,你服务端收到参数后做一次URL解码即可拿到完整的带#的订单名称。
示例编码后的请求如下:

GET http://localhost:4200/v1/fetch_tracking_numbers.json?order_names[]=%231001.1&order_names[]=%231002.1&order_names[]=%231003.2

你可以在Shopify的履约应用回调配置中开启参数自动编码,如找不到对应配置可联系Shopify官方支持调整。

方案2:修改接口为POST请求传递参数

将你的回调接口调整为接收POST请求,把order_names等参数放在请求体(JSON格式/表单格式均可)中传递,不要放在URL查询字符串里。这种场景下#只是普通字符串,不会被HTTP客户端截断,你直接从请求体中读取参数即可拿到完整值。
你只需要同步在Shopify应用配置中将回调请求方式修改为POST,配置参数走请求体传递即可,整体改造成本很低。


内容的提问来源于stack exchange,提问作者Brady Agranoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:24:01