javascript - 登录的用户是特定 View 上的 AnonymousUser

标签 javascript python django cookies

我遇到一个问题,在特定 View 请求上,用户返回 AnonymousUser。

这是由我用来收款的 JavaScript 库引起的。该 javascript 库创建一个 cookie,使 django 将登录用户视为 AnonymousUser。

如果我删除该 cookie,django 会看到用户已登录,但经过几次刷新后,我会得到一个新的 cookie,它再次使登录用户成为 AnonymousUser。

我仅在该库插入到页面中的一个特定页面中遇到此问题。

有什么问题吗?

最佳答案

javascript in question设置名为 mistertango[collect][mt_fp] 的 cookie。

当 cookie 被定义时(我猜是 RFC 6265 ),它们似乎并没有真正指定您可以在 cookie 名称中使用哪些字符,除了基本的“文本”。

这会导致解析 cookie 名称时出现一些问题。 Django 依赖 Python 的 http.cookies 来实现这一点,而且 http.cookies 似乎不允许 cookie 名称中包含括号。 http.cookie 无法解析其中包含括号的 cookie 对,并且不会解析此后的对,这意味着它看不到用于身份验证的 sessionid cookie。

我无法判断 Django/http.cookie 是否应该支持这一点。 PHP does however似乎支持它(即使它被破坏了),而 Ruby on Rails does not 。 简单的解决方案是在 Cookie 名称中仅使用字母数字字符

对于您的情况,最好的解决方案是让 javascript 作者更改他们的 cookie 名称。如果这是不可能的,或者同时,您可以自己托管 javascript 并更改副本中的 cookie 名称。 (如果 cookie 用于此 javascript 代码段之外的其他内容,这可能不起作用,但我不太了解 Javascript,也看不出它的用途。)

关于javascript - 登录的用户是特定 View 上的 AnonymousUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38787545/

相关文章:

javascript - Angular - 拼接函数总是删除最后一个元素

Javascript onsubmit 与 cgi 操作?

javascript - GitHub Pages + Jekyll + Bootstrap + CDN问题

Javascript:如何判断元素是否在视口(viewport)中?

python - Codecademy 熟能生巧 10/15(文字审查)

Python正则表达式重复

与 Web 服务器通信的 Python 应用程序?想法?

python - Django 教程。计数器没有变化

django - 如何解决拒绝访问 aws s3 文件?

python - Elastic Beanstalk 中用于接收 AWS Worker Tier 请求的 Django POST 监听器