使用Python requests库向Shopify REST端点发送POST请求异常:实际为GET请求
解决requests发送POST到Shopify REST端点变成GET的问题
以下是排查和解决的具体步骤:
检查代码基础正确性
确认你调用的是requests.post()而非requests.get(),同时检查参数传递是否有误——比如不要把请求体数据传到params参数中(这会将数据转为URL查询参数,导致请求行为异常)。排查重定向触发的问题
requests默认在遇到301/302重定向时,会自动将POST请求转为GET请求。你可以通过禁用重定向来验证这一点:import requests shopify_url = "你的Shopify API端点" headers = { "X-Shopify-Access-Token": "你的访问令牌", "Content-Type": "application/json" } payload = {"你的请求体数据"} # 禁用自动重定向 response = requests.post(shopify_url, json=payload, headers=headers, allow_redirects=False) print(f"状态码: {response.status_code}") print(f"重定向目标: {response.headers.get('Location')}")如果返回301/302状态码,说明是URL触发了重定向。此时直接使用
Location头中的目标URL发送POST请求即可解决问题(通常差异在于URL末尾是否带有斜杠)。对比urllib3的请求细节
将你用urllib3发送的请求和requests的请求做逐项对比:- 确认两者的URL完全一致(包括斜杠、查询参数等)
- 检查请求头是否相同,比如
Content-Type、授权令牌字段等 - 验证请求体的格式和内容是否完全匹配
升级requests版本
旧版本的requests可能存在重定向处理的bug,执行以下命令升级到最新稳定版本:pip install --upgrade requests
内容的提问来源于stack exchange,提问作者Olek Osikowicz
相关产品推荐
相关产品推荐

