Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 登录用户是特定视图上的匿名用户_Javascript_Python_Django_Cookies - Fatal编程技术网

Javascript 登录用户是特定视图上的匿名用户

Javascript 登录用户是特定视图上的匿名用户,javascript,python,django,cookies,Javascript,Python,Django,Cookies,我有一个问题,在特定的视图请求中。用户返回AnonymousUser 这是由我用来收集付款的javascript库引起的。该javascript库生成一个cookie,使django将登录用户视为匿名用户 如果我删除该cookie,django会将该用户视为已登录,但在刷新几次后,我会得到一个新的cookie,这会再次使登录的用户成为匿名用户 我只在一个特定的页面上有这个问题,在这个页面中插入了这个库 你知道怎么回事吗?他们用名字设置了一个cookiemistertango[collect][m

我有一个问题,在特定的视图请求中。用户返回AnonymousUser

这是由我用来收集付款的javascript库引起的。该javascript库生成一个cookie,使django将登录用户视为匿名用户

如果我删除该cookie,django会将该用户视为已登录,但在刷新几次后,我会得到一个新的cookie,这会再次使登录的用户成为匿名用户

我只在一个特定的页面上有这个问题,在这个页面中插入了这个库

你知道怎么回事吗?

他们用名字设置了一个cookie
mistertango[collect][mt\u fp]

当cookie被定义时(,我猜),它们似乎并没有真正指定cookie名称中允许使用的字符,基本上是«text»

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

我无法判断Django/http.cookie是否应该支持此功能。 PHP似乎支持它(即使它坏了),而Ruby支持Rails。 简单的解决方案是在cookie名称中只使用字母数字字符

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

通过名称设置cookie
mistertango[collect][mt_fp]

当cookie被定义时(,我猜),它们似乎并没有真正指定cookie名称中允许使用的字符,基本上是«text»

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

我无法判断Django/http.cookie是否应该支持此功能。 PHP似乎支持它(即使它坏了),而Ruby支持Rails。 简单的解决方案是在cookie名称中只使用字母数字字符


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

当涉及cookie名称时,它比这要复杂一些。再见,谢谢。我应该考虑搜索,而不是试图阅读RFC。这让我感到困惑和困倦。我想在设置cookie时,你应该坚持使用字母数字字符(最新的RFC减去现实生活中的实现),并在解析cookie时准备好几乎所有的东西。这比cookie名称要复杂一些。再见,谢谢。我应该考虑搜索,而不是试图阅读RFC。这让我感到困惑和困倦。我想在设置cookie时,您应该坚持使用字母数字字符(最新的RFC减去现实生活中的实现),并在解析cookie时做好准备。