Kha*_*led 7 python cookies google-app-engine webob webapp2
在webapp2 文档中没有提到设置SameSitecookie的属性,它似乎是建立在 WebOB 的响应处理程序上的,我检查了 webOB 文档页面,它清楚地显示了'SameSite' flag as an accepted cookie parameter
尽管如此,我还是尝试在 set cookie 中设置它:
self.response.set_cookie(name, secure_cookie, path='/', secure=True,
httponly=True, samesite='lax', expires=expireDate)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
TypeError: set_cookie() got an unexpected keyword argument 'samesite'
我知道可以使用,self.response.headers.add_header('Set-Cookie', ...但我希望我可以self.response.set_cookie按照 webapp2 文档使用
Samesite在webob 1.8中引入,但 App Engine 标准环境 SDK 附带1.1.1 和 1.2.3作为内置库。
您可以尝试更新版本的供应商webob,看看这是否会覆盖内置版本。
一旦安装了webob该支持的版本,就可以将关键字参数传递给samesitesamesiteResponse.set_cookie
class MyHandler(webapp2.RequestHandler):
def get(self):
self.response.set_cookie('cookie-name', value='42', samesite='lax')
Run Code Online (Sandbox Code Playgroud)
此示例应用程序设置samesite=strict由 生成的会话 cookie webapp2_extras.sessions,假设底层 webob 包支持它。
import webapp2
from webapp2_extras import sessions
class HelloHandler(webapp2.RequestHandler):
def dispatch(self):
self.session_store = sessions.get_store(request=self.request)
try:
super(HelloHandler, self).dispatch()
finally:
self.session_store.save_sessions(self.response)
@webapp2.cached_property
def session(self):
return self.session_store.get_session()
def get(self):
self.session['hello'] = 'world'
self.response.headers['content-type'] = 'text/plain'
self.response.write('Hello world')
webapp2_config = {
'webapp2_extras.sessions': {
'secret_key': 's3cr3t',
'cookie_args':{'samesite': 'strict'}
},
}
application = webapp2.WSGIApplication([
webapp2.Route(r'/', handler=HelloHandler),
],
config=webapp2_config)
Run Code Online (Sandbox Code Playgroud)
响应的set-cookie标头是
class MyHandler(webapp2.RequestHandler):
def get(self):
self.response.set_cookie('cookie-name', value='42', samesite='lax')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |