2017-06-24 3 views
0

Wenn ich meine Datei wie im angegebenen Codebeispiel (ES6-Import) entweder mit Chrom oder Firefox anfordere, bekomme ich die entsprechende Anfrage auf der Serverseite, aber im Gegensatz zur "normalen" Skript laden (per Skript-Tag mit src) Cookies sind nicht in der Kopfzeile zur Verfügung gestellt, ist das normal? Und wenn ja: Wie soll ich diese Anfrage mit einer Sitzung verknüpfen, wenn ich eine Cookie-basierte Authentifizierung habe?Cookies nicht in der Kopfzeile, wenn die Datei vom Import angefordert wird

Geht nicht - weil Browser mit der Aufforderung nicht etabliert Cookie senden:

<script type="module"> 
    import '/index.js'; 
</script> 

Works - Browser sendet Cookie mit der Anfrage:

<script src="/index.js"> 
</script> 

Antwort

2

ich es herausgefunden mich:

Sie haben die "crossorigin" -Attribut auf den Script-Tag hinzuzufügen:

<script type="module" crossorigin> 
    import '/index.js'; 
</script> 

Dies liegt daran, es6 Modul Der Import geht irgendwie unter CORS, auch wenn die Anfrage für das Modulskript auf denselben Ursprung geht. Und CORS sendet keine Anmeldeinformationen für Modulskriptanforderungen. ... Es sei denn, du legst das Crossorigin-Attribut an.

Dieser Artikel von Jack Archibald hat mir sehr geholfen (Die Browser-Probleme sind aktuell nicht ganz selbstverständlich erwähnt mehr):

https://jakearchibald.com/2017/es-modules-in-browsers/

0

Sie die Cookies auf dem Fenster setzen können um es sichtbar zu machen, ansonsten sendet der Browser nur Header mit Anfragen. So etwas wie ...

const window.cookie = document.cookie;

+0

ich getan habe, wie Sie die Cookies auf vorgeschlagen und sorgte dafür sind Das Fensterobjekt vor der Anforderung von index.js ging aus. Aber die Anfrage, als es auf dem Server angekommen ist, hatte noch nicht das Session-Cookie :( – jiron

+0

Verwenden Sie Winkel oder etwas von der Art? – OneNeptune

+0

Nein, alles, was ich auf der Client-Seite habe, ist jquery und modles Flag aktiviert, Server -side Ich habe node.js – jiron

Verwandte Themen