2014-12-07 20 views
3

在node.js中(在Connect.js運行此),我能夠設置醚位置或設置Cookie與writehead,但不兩者在同一時間。目前,下方設置了庫克,但URL不重定向到新的位置:的Node.js - writeHead同時設置「位置」和「設置Cookie」

function foo(req, res, next) { 
    var url = /container-templates/; 
    if (url.test(req.url)) { 
     console.log(url.test(req.url)); 
     console.log(req.url); 
     res.writeHead(302, ["Location", 'https://staging.dx.host.com' + req.url], 
       ["Set-Cookie", "fake-token=5b49adaaf7687fa"]); 
     res.end(); 
    } else { next() } 
} 

在一個側面說明,我做這行的學習經驗,不希望使用任何預先編寫的插件。

回答

3

Response#writeHead期望標題是一個對象而不是數組參數列表。

Node HTTP documentation定義了以下特徵:

response.writeHead(statusCode, [reasonPhrase], [headers]) 

如果你想在多個頭通過上面的代碼應改爲:

response.writeHead(302, { 
    Location: 'https://staging.dx.host.com' + req.url', 
    'Set-Cookie': 'fake-token=5b49adaaf7687fa' 
}); 

reasonPhrase[]意味着其可選的,根據參數的類型推斷您提供給函數的內容。除非它包含對變量名稱無效的字符(如-),並且您不需要用引號將key對象的一部分包裝起來(-),並且單個'將適用於所有字符串 - 在'"之間的javascript沒有區別。

+0

只是要注意:我不能設置其他主機上的cookie重定向...在代理上是的,但不是在重定向 – dman 2014-12-08 14:11:28

+1

是的,我沒有想過這個,但HTTP規範不允許在302上。 – tkone 2014-12-08 15:04:32