2016-08-12 2 views
0
gesendet werden

Ich versuche, meine Sitzung api Anfrage durch den Server, um ein Httponly-Cookie mit Session-Token zu setzen, um Rohr und lief in einen Fehler zu sagen:Express/node.js kann nicht Header gesetzt, nachdem sie

kann nicht Header gesetzt, nachdem sie

nicht ganz sicher gesendet werden, was das bedeutet, aber hier ist mein Abfangjäger in einer ausdrücklichen, die /api/sessions Endpunkt und in erfolgreichen Szenario auf einen Beitrag hört setzt ein Cookie

app.post('/api/sessions', (req, res) => { 
    const url = `${config.API_HOST}/sessions` 
    let apiCall = request.post(url, (err, response, body) => { 
    if (!err && response.statusCode === 200) { 
     const data = JSON.parse(body) 
     let sessionCookie = { 
     path: '/', 
     hostOnly: true, 
     secure: true, 
     httpOnly: true 
     } 
     res.cookie('SESS', data.token, sessionCookie) 
    } 
    }) 
    req.pipe(apiCall).pipe(res) 
}) 

EDIT: Grund, warum ich es in der Lage bin und Verweise in meiner Client-Seite App verwenden.

Antwort

1

Von der obigen Fehlermeldung versuchen Sie, eine Antwort zweimal wo in Ihrem Code zu senden. Can't set headers after they are sent bedeutet, dass der Code versucht, die Antwortheader (wahrscheinlich um eine neue Antwort zu senden) zu ändern, nachdem eine vorherige Antwort gesendet wurde.

Von Ihrer Implementierung werden Sie res in res.cookie('SESS', data.token, sessionCookie) in apiCall Definition aufrufen und auch die apiCall-res in Rohrleitungen auf dieser Linie req.pipe(apiCall).pipe(res), Modifizieren der Antwort ein zweites Mal widersprechen. Ich denke res.cookie ruft res.end intern auf. Wenn dies der Fall ist, wird jeder weitere Anruf oder Bearbeitung zu res den Fehler werfen, den Sie haben.

Sie sollten diese in der Lage sein, zu beheben, indem .pipe(res) Teil in req.pipe(apiCall).pipe(res) Entfernen .und einfach verwenden

req.pipe(apiCall) 

Sie können this question auf überprüfen, wie Cookies in Express setzen und senden und this question auf bessere Erklärung der Fehlermeldung .

Verwandte Themen