[英]Django session cookie: from (any) other domain, check if user is logged in
我有一個域domain1.com。 用戶登錄並設置了cookie。 這是使用Django會話完成的。
然后,我轉到另一個域domain2.com。 該域運行javascript。 通過此javascript,我想查看用戶是否登錄到domain1.com。
這可能嗎? 我可以從domain2中看到屬於domain1的cookie嗎? 還是可以通過ajax以某種方式撥打call domain1來檢查用戶是否已登錄?
另外,用戶最初可能已經從Chrome登錄到domain1,但是現在他們正在從另一個瀏覽器訪問domain2。 Cookies瀏覽器不是特定於瀏覽器的嗎?
編輯:
我要解決的真正問題是什么? (下面有評論):我創建了一個Chrome擴展程序。 當用戶按下domain2中的擴展程序圖標時,將運行javascript,該javascript從頁面收集信息。 此信息需要發送到domain1上的用戶帳戶。 請注意,domain2可以是ANY域,而不是我創建的域。
我嘗試過的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是真實域。 這可能是問題嗎? 它確實會正確調用該函數。
這可能嗎? 我可以從
domain2
看到屬於domain1
的cookie嗎?
不可以。Cookie僅限於域(及其子域)。 www.foo.com
, zoo.foo.com
可訪問.foo.com
的cookie,但bar.com
不可bar.com
。
還是可以通過ajax以某種方式撥打call
domain1
來檢查用戶是否已登錄?
這是一種方法,是的,它將起作用。
另外,用戶最初可能已經從Chrome登錄到domain1,但是現在他們正在從另一個瀏覽器訪問domain2。 Cookies瀏覽器不是特定於瀏覽器的嗎?
對,他們是。 如果您已登錄Chrome,並且打開了Safari,則將無法登錄。
Cookies是特定於域的,您可以在foo.example.com和bar.example.com之間共享cookie,但不能在兩個域之間共享cookie。 要解決此問題,您需要從域2向域1發送ajax請求,並檢查其中是否設置了cookie,然后將響應發送回域2。
選中此So問題以供參考: 為具有多個域名的Django站點設置默認cookie域
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.