2017-09-17 3 views
0

Es gibt zwei domäne: domain1.com und domain2.com. Der Server von domain1.com:set cookie cross herkunft

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

und der Server von domain2.com:

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

Ich fand, dass das Cookie auf domain1.com gesetzt ist, warum?

Ich möchte den Cookie auf domain2.com setzen. Wie macht man das?

Antwort

1

Das Setzen von Cookies für eine andere Domain ist nicht möglich. Dies zuzulassen würde eine enorme Sicherheitslücke darstellen. Es gibt keine Cross-Domain-Cookies. Du könntest einen Cookie zwischen foo.example.com und bar.example.com teilen, aber niemals zwischen example.com und example2.com und das ist aus Sicherheitsgründen.

Wenn Sie Daten an eine andere Domäne übergeben möchten, können Sie diese in die URL codieren. oder du könntest so einen Hack machen.

zentralisiert alle Cookies in einer einzelnen Domäne,

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 

Natürlich ist es nicht ganz sicher ist, und Sie haben eine Art von internem Protokoll zwischen Ihren Anwendungen zu erstellen, das zu tun.

Schließlich wäre es sehr ärgerlich für den Benutzer, wenn Sie so etwas bei jeder Anfrage tun, aber nicht, wenn es nur die erste ist.

siehe RFC6265:

Der User-Agent Cookies ablehnen wird, wenn das Domain-Attribut einen Bereich für den Cookie gibt, die die Ursprungsserver umfassen würden. Zum Beispiel akzeptiert der Benutzeragent ein Cookie mit einem Domain Attribut von "example.com" oder von "foo.example.com" von foo.example.com, aber der User Agent akzeptiert kein Cookie mit einem Domain-Attribut von "bar.example.com" oder von "baz.foo.example.com".

HINWEIS: Aus Sicherheitsgründen sind viele Benutzeragenten so konfiguriert, dass sie Domänenattribute zurückweisen, die "öffentlichen Suffixen" entsprechen. Zum Beispiel werden einige Benutzer-Agenten Domain-Attribute von "com" oder "co.uk" ablehnen. (siehe Abschnitt 5.3 für weitere Informationen.)

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

+0

Danke für Ihre Antwort, aber ich denke, Sie meine Frage midunderstood, wie Sie gesagt haben, wenn 'example.com' zu' cookiemaker ist umleiten. com, und der CookieMaker.com kann keinen Cookie auf "example.com" setzen, aber ich habe festgestellt, dass der Cookie wie meine Frage auf "example.com" gesetzt ist. Ich möchte den Cookie nicht auf "example.com", sondern auf "cookiemaker.com" setzen – laoqiren