您如何在 Python3 中设置 cookie 政策?
How do you set cookie policy in Python3?
我正在使用 python 3.8。我正在尝试使用 Zeep 库来使用公司的 SOAP 资源。 SOAP 服务很旧,不会很快更新。其中一个问题是服务在响应 cookie 中设置了 "session ID"。它设置了现在已过时的 set-cookie2
header.
from requests import Session
from zeep import Client, Settings
from zeep.cache import SqliteCache
from zeep.transports import Transport
my_session = Session()
my_settings = Settings(strict=False)
my_cache = SqliteCache()
my_url = 'https://lists.mycompany.com/lists/wsdl'
client = Client(
my_url,
transport=Transport(
session=my_session,
cache=my_cache
),
settings=my_settings
)
...
我可以在 my_session
中看到 cookie object。这是一个 RequestsCookieJar
,我不知道如何设置 cookie 策略值。在 pycharm 调试器中,我可以看到 my_session.cookies
有 "Protected Attributes",其中之一是 _policy
,它是 DefaultCookiePolicy
object。我可以看到 hide_cookie2
是 False(默认值和我需要的)但是 rfc2965
也是 False 并且需要设置为 True。
在 RequestsCookieJar
class 中,我看到了 get_policy()
方法,但没有设置策略。我在某处缺少链接。如何为整个应用程序或每个请求设置 cookie 策略?
嗯,
您可以像这样覆盖 DefaultCookiePolicy
属性:
from http.cookiejar import DefaultCookiePolicy
from requests import Session
myCookiePolicy=DefaultCookiePolicy(rfc2965=True)
my_session = Session()
my_session.cookies.set_policy(policy=myCookiePolicy)
希望这对您有所帮助。
我正在使用 python 3.8。我正在尝试使用 Zeep 库来使用公司的 SOAP 资源。 SOAP 服务很旧,不会很快更新。其中一个问题是服务在响应 cookie 中设置了 "session ID"。它设置了现在已过时的 set-cookie2
header.
from requests import Session
from zeep import Client, Settings
from zeep.cache import SqliteCache
from zeep.transports import Transport
my_session = Session()
my_settings = Settings(strict=False)
my_cache = SqliteCache()
my_url = 'https://lists.mycompany.com/lists/wsdl'
client = Client(
my_url,
transport=Transport(
session=my_session,
cache=my_cache
),
settings=my_settings
)
...
我可以在 my_session
中看到 cookie object。这是一个 RequestsCookieJar
,我不知道如何设置 cookie 策略值。在 pycharm 调试器中,我可以看到 my_session.cookies
有 "Protected Attributes",其中之一是 _policy
,它是 DefaultCookiePolicy
object。我可以看到 hide_cookie2
是 False(默认值和我需要的)但是 rfc2965
也是 False 并且需要设置为 True。
在 RequestsCookieJar
class 中,我看到了 get_policy()
方法,但没有设置策略。我在某处缺少链接。如何为整个应用程序或每个请求设置 cookie 策略?
嗯,
您可以像这样覆盖 DefaultCookiePolicy
属性:
from http.cookiejar import DefaultCookiePolicy
from requests import Session
myCookiePolicy=DefaultCookiePolicy(rfc2965=True)
my_session = Session()
my_session.cookies.set_policy(policy=myCookiePolicy)
希望这对您有所帮助。