我有一些Python代码,它设置了如下所示的cookie:
loader = QtWebEngineWidgets.QWebEngineView()
profile = QtWebEngineWidgets.QWebEngineProfile("storage", loader)
cookie_store = profile.cookieStore()
with open('cookie.txt', 'rb') as f:
contents = f.read()
cookie_store.setCookie(QNetworkCookie(contents))
webpage = QtWebEngineWidgets.QWebEnginePage(profile, loader)但是,当我运行上面的代码时,我会得到以下错误:
A cookie associated with a resource at was set with `SameSite=None` but without `Secure`如何使用PyQT5解决这个问题?如何使用SameSite=None和Secure设置PyQt5?
发布于 2022-05-13 20:42:59
Qt6有一个用于处理SameSite的专用API,但是在Qt5中没有类似的东西。因此,由于QWebEngineCookieStore只接受QNetworkCookie对象,因此有必要从原始cookie数据构造它们。这可以很容易地使用Python的http.cookie模块 (这将确保所有内容都被正确编码):
from http.cookies import SimpleCookie
cookie = SimpleCookie()
cookie['name'] = 'value'
cookie['name']['samesite'] = None
cookie['name']['secure'] = True
contents = cookie.output().encode('ascii')
for qt_cookie in QtNetwork.QNetworkCookie.parseCookies(contents):
print(qt_cookie.toRawForm())
cookie_store.setCookie(qt_cookie)输出:
b'Set-Cookie: name=value; secure; SameSite=None'有关可与MDN: SameSite cookie一起使用的各种值的说明,请参见SameSite。显然,明确设置SameSite=Lax可能是一个更好的默认设置:
cookie = SimpleCookie()
cookie['name'] = 'value'
cookie['name']['samesite'] = 'Lax'
contents = cookie.output().encode('ascii')https://stackoverflow.com/questions/72223575
复制相似问题