HTTP POST& 302在Python中重定向

时间:2017-10-06 17:05:17

标签: python redirect post

我正在尝试使用Python中的POST方法查询服务器。

import requests

url  = "https://www.test.com/service"
data = {"param": "value"}

req = requests.post(url, data).content

当我查看req时,它显然没有考虑我发布的数据。

如果我用cURL检查标题:

curl -ik -X POST -d "param=value" https://www.test.com/service

我得到以下HTTP 302

HTTP/1.1 302 Déplacé Temporairement
Date: Fri, 06 Oct 2017 16:42:36 GMT
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Location: https://www.test.com/redirect
Content-Language: fr-FR
Content-Length: 0
Via: 1.1 www.test.com

因此,如果我理解得很好,我会被重定向到Location https://www.test.com/redirect。此地址只能使用GET方法进行查询;如果我尝试POST,我会收到HTTP 500错误。

我理解的是,我POST带有参数的请求,我被重定向到另一个页面,请求变为GET,查询Location。我不明白我的参数会发生什么:在我的浏览器中,我得到的答案考虑了发送的参数,当我手工查询时,他们似乎已经失去了#34;因为我只是得到https://www.test.com/redirect的空版本。

我想念什么?我对请求的理解非常浅,所以我确定我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:0)

使用requests.post更正语法。 requests

import requests

url  = "https://www.test.com/service"
data = {"param":"value"}

req = requests.post(url, data).content