我有一个域 domain1.com。用户登录并设置 cookie。这是使用 Django 会话完成的。
然后我转到另一个域 domain2.com。此域运行 javascript。从这个javascript,我想看看用户是否登录到domain1.com。
这可能吗?我可以从 domain2 中看到属于 domain1 的 cookie 吗?或者我可以通过 ajax 以某种方式调用 domain1 来检查用户是否已登录?
此外,用户可能最初从 Chrome 登录到 domain1,但现在他们正在从另一个浏览器访问 domain2。cookie 不是特定于浏览器的吗?
编辑:
我要解决的真正问题是什么?(下面重新评论):我创建了一个 Chrome 扩展程序。当用户从 domain2 按下扩展图标时,将运行一个 javascript,它从页面收集信息。此信息需要发送到 domain1 上的用户帐户。请注意,domain2 可以是任何域,而不是我创建的域。
我对 AJAX 和 cookie 的尝试。
从 domain1 设置 cookie:
response.set_cookie("user_cookie", value="somevalue", max_age=60*60, expires=None, path='/', domain=None, secure=None, httponly=False)
创建 Python 函数,从 domain1.com/checklogin 执行:
@csrf_exempt
def is_logged_in(request):
cookie = request.COOKIES.get('user_cookie')
if cookie is not None:
return HttpResponse("1")
else:
return HttpResponse("0")
转到 domain1.com/checklogin -> 响应为“1”
从 domain2 调用 javascript,如下所示:
var xmlHttp_1=new XMLHttpRequest();
xmlHttp_1.open("POST","http://domain1.com/checklogin/",false);
xmlHttp_1.send();
alert(xmlHttp_1.responseText);
这里的响应错误地是 0。它看不到由 domain1 创建的 cookie。
请注意,此时 domain1 是 localhost 而 domain2 是一个真实的域。这可能是问题吗?它确实正确调用了该函数。