当AngularJS Cookie标头包含“;;”

时间:2017-12-09 22:55:14

标签: angularjs django cookies http-headers csrf

AngularJS发送的Cookie标题如下:

_ga=redacted; sessionid=redacted; ; csrftoken=redacted

额外的分号可能不符合HTTP。

这个问题有几个“移动”部分。

  1. Angular $ http POST请求失败,出现403错误,“CSRF失败:CSRF cookie未设置。”

  2. CSRF Coo​​kie和标头肯定会在Chrome中的开发标签中验证的请求中设置。

  3. Chrome会在请求中显示COOKIE标题文字:

    Cookie:_ga =编辑;的sessionid =节录; ; csrftoken =节录

  4. 我已经做了足够的步骤通过Django代码看到上面的原始cookie字符串进入请求的HTTP_COOKIE字段中的Django应用程序,但csrftoken cookie从未生成它进入request.COOKIE。 Django的cookie文本解析器被原始cookie文本中的额外分号抛弃。我不知道解析器是否已损坏或AngularJS是否已损坏,因为我不知道原始cookie字符串的官方语法要求。但最简单的解决方案是找出如何让Angular删除那个'空白'cookie。

  5. Django 1.8.2,AngularJS 1.6.7& Python 2.7.10

  6. 这种情况发生在macOS上的开发环境中,而不是我的登台系统,这是一个Linux机箱。

  7. 更新:

    感谢@xyres的帮助,我通过升级到Django 1.8.15解决了这个问题。但是AngularJS不应该发送这个格式错误的cookie字符串,对吗?如何修复AngularJS客户端?

0 个答案:

没有答案