如何在POST登录服务器时保存身份验证cookie

时间:2018-01-09 15:37:02

标签: python

我正在尝试使用我的python脚本通过帖子登录服务器,但它不工作,虽然当我通过postman进行相同的POST它工作正常。我相信我的python脚本不保存身份验证cookie信息,或者我可能需要在我的有效负载中添加更多字段。我是非常非常初学者的编程水平所以请指导我如何保存我可以在我的下一个GET,POST请求中进一步使用的身份验证cookie。

当我通过邮递员运行此POST请求时。我只是在身体中提供用户名和密码,我得到了以下成功的回复

  

{       “ErrorCode”:0,       “数据”:{           “角色”:“管理员”,           “_id”:“7c9e7mdf4d249212282480zb”,           “名字”:“test5”       }   }

但是当我运行下面提到的Python脚本时,我正在

 <!DOCTYPE HTML PUBLIC"-//IETF//DTD HTML 2.0//EN">  
500 Internal Server error

请在下面提到我的python脚本

import requests

url = "http://172.125.169.21/api/user/login"

payload = "{\"name\": \"test5\", \"password\": \"Hello123\"}"

response = requests.request("POST", url, data=payload)

print(response.text)

print(response.headers)

1 个答案:

答案 0 :(得分:0)

对于python中的请求库,数据对象采用python dict对象,而不是JSON字符串。如果您要将代码编辑为:

import requests
import json
url = "http://172.125.169.21/api/user/login"
payload = {"name": "test5", "password": "Hello123"}
headers = {'Content-Type': "application/json"}
response = requests.request("POST", url, json=payload, headers=headers)
# the json parameter should handle encoding for you
print(response.text)
print(response.headers)

您可以在响应对象的cookies参数中使用Cookie。有关详细信息,请参阅the requests documentation

print(json.dumps(response.cookies, separators=(",",":"), indent = 4))

这应该打印出您收到的cookie。您可以使用请求&#39; session handling abilities或存储此信息的变量,但您可以选择。我们将这些cookie保存到请求cookiejar:

cookies = response.cookies

我们会在授权检查或任何其他请求中使用这些Cookie:

auth_check_url = "172.125.169.21/api/user/checkLogin"
response = requests.get(auth_check_url, cookies=cookies)
print(response.text)