POST请求未发送会话cookie

时间:2019-04-23 21:41:11

标签: python python-3.x python-requests

我正在使用以下代码与网站互动:

session = requests.session()
get = session.get(LANDING_URL, headers=HEADERS)
post = session.post(LANDING_URL, headers=HEADERS, data=PARAMS)

我正在使用session对象在两次调用之间保留cookie,但是get请求之后的post请求似乎未使用会话cookie。以下输出来自pdb

(Pdb) get.cookies
<RequestsCookieJar[Cookie(version=0, name='ASP.NET_SessionId', value=...)]>
(Pdb) post.cookies
<RequestsCookieJar[]>
(Pdb) session.cookies
<RequestsCookieJar[Cookie(version=0, name='ASP.NET_SessionId', value=...)]>

这是否意味着发布请求未使用会话Cookie?如果是这样,为什么不呢?

1 个答案:

答案 0 :(得分:1)

页面可能使用JavaScript添加Cookie,并且请求无法运行JavaScript。

使用get.cookiespost.cookies仅显示从服务器发送的cookie,而不显示向服务器发送的cookie。

session应该保留先前请求中的所有cookie,并在POST请求中发送它们。

您可以使用httpbin.org。如果您将GET请求发送到httpbin.org/get或将POST请求发送到httpbin.org/post,则它会将所有标头,数据,cookie等发送回给您(作为JSON)。httpbin.org上还有其他有用的功能< / p>

您还可以安装CharlesMan-In-The-Middle-Py之类的本地代理服务器,并通过代理发送请求。您将在代理中看到正文和标头。您可以将代理与Web浏览器和脚本一起使用,以将您的请求与浏览器的请求进行比较。

您还可以选中post.request.bodypost.request.headers。我从未使用过它,但应该将正文和标头发送到服务器。