Fle*_*lex 7 safari header setcookie http-headers x-xsrf-token
最近,Safari 11在Mac OSX上发布.此更新导致我们的Web应用程序与我们的reuest标头上的XSRF结合使用时出现问题.我将尝试以逻辑方式描述问题.这就是好情况的样子:
当用户想要登录时,他从服务器接收带有Set-Cookie的响应,该Set-Cookie包含XSRF令牌的值. Eg: Set-Cookie: XSRF-TOKEN=LKNBX4DZhL708KjXNkgXnlxTDCNuhsZG1kTc2SFy498; Path=/; Secure
页面刷新将执行的下一个调用包含标头中的正确XSRF值.在服务器端,检查值等.来自前端的每个调用都将包含该XSRF令牌.
如果用户注销并想再次登录,则他的XSRF cookie将被新值覆盖,并且能够使用该令牌登录.
我们的问题情况(在Mac OSX上使用Safari 11,其他浏览器不显示此行为):
如果没有cookie存在,用户可以正常登录
但是,如果他想重新登录(在上一个会话之后),则会进行刷新.在第一次调用时,刷新其调用的XSRF令牌不会被新值替换,它们仍然包含来自前一会话的旧XSRF令牌.当我们检查此请求时,我们看到此请求中的cookie包含正确的值,但标头反映了旧令牌.
使用错误标题的此调用会导致会话在后端关闭,因此用户将被踢出会话.TLDR; 在Safari 11中,标题XSRF-TOKEN在刷新后不会相应地更新cookie值.我们在旧版本和其他浏览器上工作,我们认为这是一个Safar 11错误.
还有其他人遇到过类似的问题吗?在Safari 11中刷新页面后,请求的标头值是否未更新?
编辑:经过测试,我们发现在URL中放置时间戳作为查询参数会强制Safari 11发送正确的请求.似乎缓存了一些请求并忽略了更新的标头.
非常感谢!
我无法真正评论您的令牌问题,但我也怀疑 Safari 11 存在缓存问题。最近,即使对于指定的 JSON 请求
Cache-Control: no-cache, private
Run Code Online (Sandbox Code Playgroud)
Cache (Disk)
从 localhost 重新加载页面 2 次后,Safari 开始缓存这些请求(显示为)。Firefox 和 Chrome 都没有这样做。对我来说看起来像一个错误?
归档时间: |
|
查看次数: |
624 次 |
最近记录: |