仅使用urlib管理cookie



这个问题已经被问了很多次,但每个被接受的答案都利用了其他库。我在一个不能使用urllib2、http或请求的环境中进行开发。我唯一的选择是使用urllib或自己编写。

我需要将get和post请求发送到需要身份验证的本地服务器。我对这些请求没有问题,在最新的安全更新强制身份验证之前,一切都正常。身份验证仅通过Cookie进行。

我可以发送我的身份验证帖子,并收到成功响应的状态200。我正在努力的是从这个响应中提取cookie值,并仅使用urlib将它们附加到所有未来的post请求中。

import urllib.request, json
url = "serverurl/login"
data = {
"name" : "username",
"password" : "password"
}
jsonData = json.dumps(data).encode('utf-8')
req = urllib.request.Request(url, data=jsonData, headers={'content-type': 'application/json'})
response = urllib.request.urlopen(req).read().decode('utf8')
print(response)

供其他人参考,经过几个小时的试错和cookie研究,以下得到了一个有效的解决方案。

import urllib.request, json
url = "serverurl/login"
data = {
"name" : "username",
"password" : "password"
}
jsonData = json.dumps(data).encode('utf-8')
req = urllib.request.Request(url, data=jsonData, headers={
'content-type': 'application/json'
})
response = urllib.request.urlopen(req)
cookies = response.getheader("Set-Cookie")

然后在以后的帖子中,您将"Cookie" : cookies添加到请求中

req = urllib.request.Request(url, data=jsonData, headers={
"content-type" : "application/json", 
"Cookie" : cookies
})

最新更新