Dax*_*Dax 8 python python-requests
我在对一个新的API进行了一些测试之后发现了这一点,而那边的管理员说我正在做GET,而我正在做我的POST.启用调试后,我发现请求将执行初始POST,然后对新的302 URL执行GET.
在我理解了问题所在之后,我的问题现在得到解决,但这是一个错误还是预期的行为?如果您在POST上收到302,则不应引发异常,或者重试POST到新URL.
我不想把它作为一个bug记录在GitHub上,除非我确定它是一个.只想要一些输入.
谢谢
根据RFC,
如果收到302状态代码以响应GET或HEAD以外的请求,则用户代理不得自动重定向请求,除非用户可以确认,因为这可能会改变发出请求的条件.
(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3)
所以这种行为至少不符合 - 但RFC也说明:
注意:RFC 1945和RFC 2068指定不允许客户端更改重定向请求的方法.但是,大多数现有的用户代理实现将302视为303响应,对Location字段值执行GET,而不管原始请求方法如何.已经为希望明确清楚客户端期望哪种反应的服务器添加了状态代码303和307.
督察:虽然不符合RFC,这是大多数用户代理的默认行为,大多数Web应用程序确实实现了302,而不是303重定向后得到的.
所以requests这里的行为显然不是一个错误,而是一个实际的设计决策.而且,正如Foo Bar User已经建议的那样,你可以使用allow_redirectsarg 来改变它.
| 归档时间: |
|
| 查看次数: |
2437 次 |
| 最近记录: |