Python 3.x 仅使用urllib管理Cookie

Python 3.x 仅使用urllib管理Cookie,python-3.x,cookies,urllib,Python 3.x,Cookies,Urllib,这个问题已经被问过很多次了,但每一个被接受的答案都会用到其他图书馆。我正在一个无法使用urllib2、http或请求的环境中开发。我唯一的选择是使用urllib或自己编写 我需要将get和post请求发送到本地需要身份验证的服务器。我对请求没有任何问题,在最新的安全更新强制认证之前,这一切都正常工作。身份验证仅通过cookies完成 我可以发送我的身份验证帖子,并收到状态为200的成功响应。我正在努力解决的是从这个响应中提取cookie值,并仅使用urllib将它们附加到所有将来的post请求中

这个问题已经被问过很多次了,但每一个被接受的答案都会用到其他图书馆。我正在一个无法使用urllib2、http或请求的环境中开发。我唯一的选择是使用urllib或自己编写

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

我可以发送我的身份验证帖子,并收到状态为200的成功响应。我正在努力解决的是从这个响应中提取cookie值,并仅使用urllib将它们附加到所有将来的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
    })