【问题标题】:Restful API - passing cookie to subsequent POST requestsRestful API - 将 cookie 传递给后续的 POST 请求
【发布时间】:2019-12-19 18:44:45
【问题描述】:

我要查询的应用需要Json格式。支持的方法是 POST。我似乎找不到一个很好的例子来说明如何从 1 个查询中获取 cookie 并将其传递给另一个查询(或让后续查询将其用作 base package 的一部分。你能告诉我我做错了什么吗?

import json
import requests
headers = {'Content-type': 'application/json'}
data = {"username":"user1", "password":"pass1"}
login_info = json.dumps(data)

session = requests.Session()

login_url = 'https://ip/login'
response = session.post(login_url, data=login_info, headers=headers, verify=False)
print session.cookies.get_dict()
#returns the following format- {'JSESSIONID': 'DE1EE0006D53EABFA4EE0C6A50D1386A'}

query_url = 'https://ip/query'
response = session.post(query_url, cookies=session.cookies.get_dict(), headers=headers, verify=False)

print response.text
#retuns  +++++++++++++++  JSESSIONID is empty! +++++++++++++

【问题讨论】:

    标签: python jsessionid


    【解决方案1】:

    此链接可能会解决您的问题:Apache HttpClient 4.0.3 - how do I set cookie with sessionID for POST request?查看 cookie 路径调整部分...您可能需要在第二个 HTTP Post 请求之前这样做。

    您能否在 (1) 手动尝试登录和查询页面以及 (2) 对您的脚本执行相同操作时捕获 HTTP 请求、响应(例如使用 Firebug 或 Chrome),然后根据需要对它们进行消毒并将它们张贴在这里好吗?这将使我们能够更好地帮助您。谢谢。

    注意/补充阅读材料:

    1)如果您在使用 Firebug 方面需要帮助 - 这里有一个链接:How to debug the http response headers from a HTTP call

    2) 关于 jsessionID 的一些额外信息:

    https://notes-from-a-dev.blogspot.com/2014/07/understanding-jsessionid.html

    3) 这个链接对 cookie 和上下文有一个有趣的解释:https://notes-from-a-dev.blogspot.com/2014/04/sharing-jsessionid-across-applications.html 它可能正在澄清您面临的问题背后的真正原因(尽管服务器端解决方案不适用于您)。请搜索文本“AppOne/one.jsp”并从该点开始阅读,以便能够快速完成阅读。

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 2020-06-16
      • 2021-05-25
      • 2015-08-27
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多