2017-09-17 15 views
0

domain1.comdomain2.comの2つのドメインがあります。 domain1.comのサーバー:クッキーのクロスオリジンを設定

app.get('/',(req,res,next)=>{ 
    res.redirect('domain2.com/'); 
}) 

domain2.comのサーバー:

app.get('/',(req,res,next)=>{ 
    res.cookie("name",'luoxia'); 
    res.end(); 
}) 

私はクッキーがdomain1.comに設定されていることが判明し、なぜですか?

クッキーをdomain2.comに設定したいとします。これを行う方法?

答えて

1

他のドメインのCookieを設定することはできません。これを許すことは、巨大なセキュリティ上の欠陥をもたらすでしょう。 クロスドメインCookieなどはありません。 foo.example.comとbar.example.comの間でCookieを共有できますが、セキュリティ上の理由からexample.comとexample2.comの間に決してCookieを共有することはできません。

データを別のドメインに渡す場合は、これをURLにエンコードできます。またはあなたはこのようにハックすることができます。

、単一のドメインでもちろん

1. let's say cookiemaker.com When the user makes a request to example.com you redirect him to cookiemaker.com 
    2.cookiemaker.com redirects him back to example.com with the information you need 

をすべてのクッキーを集中、それは完全に安全ではありません、あなたはそれを行うためのアプリ間の内部プロトコルのいくつかの種類を作成する必要があります。

最後に、すべてのリクエストでそのようなことを行うと、ユーザーにとって非常に迷惑でしょう。

RFC6265を参照してください。

ドメイン属性 がオリジンサーバが含まれるCookieの範囲を指定しない限り、ユーザエージェントはクッキーを拒否します。 たとえば、ユーザーエージェントはドメイン 属性が "example.com"または "foo.example.com"の foo.example.comのCookieを受け入れますが、ユーザーエージェントはCookieを受け入れません "bar.example.com"または "baz.foo.example.com"のドメイン属性。

注:セキュリティ上の理由から、多くのユーザーエージェントは、「パブリック接尾辞」に対応するドメイン属性を拒否するように構成されています。たとえば、 ユーザエージェントの中には、 "com"または "co.uk"というドメイン属性を拒否するものがあります。 (詳細は5.3節を参照してください。)

1https://tools.ietf.org/html/rfc6265#section-4.1.2.3

+0

返事のおかげで、私はあなたが言ったように、あなたが、私の質問をmidunderstoodだと思い、example.com'はcookiemaker 'にリダイレクトされたときに'。 comと 'cookiemaker.com'はクッキーを' example.com'に設定できませんが、私のクイズのように 'example.com'に設定されています。 Cookieを 'example.com'に設定するのではなく、' cookiemaker.com'に設定したい – laoqiren

関連する問題