2017-07-12 4 views
-1

In meiner NodeJS Express App (mit Federn gebaut); Ich versuche, mit client-side fetch von Client Javascript zu arbeiten. Ich habe Express mit der cooke-parser Middleware.Browser setzt kein Cookie

Ich habe versucht, die credentials Header auf same-origin, aber das funktioniert nicht mehr (es funktionierte gestern, und ein paar Mal heute ... aber ich habe versucht, den Cookie zu bauen, was ich brauche und es scheint nur nicht zuverlässig zu funktionieren).

Dies ist mein Test-Schnellstraße:

app.post('/setjwt', (req, res, next) => { 
res.cookie('acokie', 'lol'); 
res.status(200); 
res.send(); 
}); 

Ich fetch in Chrom Entwickler-Tools-Konsole Senden von Anforderungen zu testen, wie so:

fetch('/setjwt', { method: 'POST', headers: { credentials: 'same-origin' } }); 

Dies sind die Header: enter image description here

Aber es ist kein Cookie in der Registerkarte Anwendung aufgeführt und in document.cookie nicht verfügbar.

Der Grund, warum ich diesen Weg haben ist zweifach:

  1. Verstehen Sie, wie Cookies funktionieren und Interop mit Express.
  2. Befreien Sie sich von dieser Hacky-Route und lassen Sie die Header/Umgebung korrekt einrichten, damit der Antwort-Header des Feat-Authentifizierungsdienstes vom Browser eingehalten wird.

Die Federn Client auf der Login-Seite wird mit fetch als seine Ruhe Umsetzung einrichten und ich

Antwort

0

fetch('/setjwt', { method: 'POST', headers: { credentials: 'same-origin' } }); funktioniert nicht einstellen.

Die Anmeldeinformationen Eigenschaft cannot be specified like that with fetch. Der richtige Code ist:

fetch(
    '/setjwt', 
    { 
    method: 'POST', 
    credentials: 'same-origin', 
    headers: { whatever: 'somevalue' } 
    }); 

Was es so einrichten, dass die Federn Authentifizierungsdienst funktionieren würde, wieder, es ist kein normaler Kopf so brushing up on the documentation hoffentlich etwas Nützliches ergeben könnte, aber ich glaube nicht, die Federauflage überholen supports passing non header options.

Verwandte Themen