1

ドメイン domain1.com があります。ユーザーがログインし、Cookie が設定されます。これは、Django セッションを使用して行われます。

次に、別のドメイン domain2.com に移動します。このドメインは JavaScript を実行します。この JavaScript から、ユーザーが domain1.com にログインしているかどうかを確認したいと思います。

これは可能ですか?domain2 から domain1 に属する Cookie を確認できますか? または、ユーザーがログインしているかどうかを確認するために、ajax 経由で domain1 を呼び出すことはできますか?

また、ユーザーは元々 Chrome から domain1 にログインしていた可能性がありますが、現在は別のブラウザーから domain2 にアクセスしています。Cookie はブラウザ固有のものではありませんか?

編集:

私が解決しようとしている本当の問題は?(以下のコメントを再): Chrome 拡張機能を作成しました。ユーザーがドメイン 2 の拡張機能アイコンを押すと、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)

domain1.com/checklogin から実行される Python 関数を作成します。

@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 は実際のドメインであることに注意してください。これが問題でしょうか?関数を適切に呼び出します。

4

2 に答える 2

2

これは可能ですか?domain1from に属する Cookie を確認できますdomain2か?

いいえ。Cookie はドメイン (およびそのサブドメイン) に限定されます。の Cookieは からアクセスできますが、.foo.comからはアクセスできません。www.foo.comzoo.foo.combar.com

domain1または、ユーザーがログインしているかどうかを確認するために ajax 経由で呼び出しを行うことはできますか?

これは 1 つの方法です。はい、うまくいきます。

また、ユーザーは元々 Chrome から domain1 にログインしていた可能性がありますが、現在は別のブラウザーから domain2 にアクセスしています。Cookie はブラウザ固有のものではありませんか?

はい、そうです。Chrome にログインしているときに Safari を開くと、ログインできません。

于 2013-04-23T07:31:15.763 に答える
1

cookie はドメイン固有のものです。cookie を foo.example.com と bar.example.com の間で共有できますが、2 つのドメイン間で共有することはできません。回避するには、ドメイン 2 からドメイン 1 に ajax リクエストを送信し、そこで Cookie が設定されているかどうかを確認し、ドメイン 2 に応答を返す必要があります。

参照用にこの質問を確認してください: 複数のドメイン名を持つ Django サイトのデフォルトの Cookie ドメインを設定する

于 2013-04-23T07:29:18.257 に答える