[英]Setting custom response header in plain Node.js
我使用Node.js的情況是這樣的:
Client --> Node.js --> External Rest API
因此,反之亦然。 根據要求,我需要從External Rest API
捕獲響應頭,並將其附加到Node.js
的響應頭和客戶端,我需要將其作為單個響應頭發送。 我嘗試這樣做(此標頭來自Node.js端):
var resHeaders = {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE',
'Access-Control-Allow-Headers': 'Content-Type,Last-modified,Connection,Access-Control-Allow-Origin,Access-Control-Allow-Methods,Date',
'Access-Control-Expose-Headers': 'Content-Type,Last-modified,Connection,Access-Control-Allow-Origin,Access-Control-Allow-Methods,Date'
};
我在這樣的變量中獲取External API
的響應標頭:
var curlHeadersResp; //I am executing curl to get response headers
最后,我試圖像這樣編譯兩者:
var finalRespHeaders = new Array();
finalRespHeaders.push(curlHeadersResp);
finalRespHeaders.push(JSON.stringify(resHeaders));
res.writeHead(200, JSON.stringify(finalRespHeaders));
但是我得到的響應頭是這樣的:
HTTP / 1.1 200 [“ HTTP / 1.1 200 OK \\ r \\ n服務器:Apache-Coyote / 1.1 \\ r \\ n內容類型:application / json \\ r \\ n傳輸編碼:chunked \\ r \\ n日期:2014年2月3日,星期一09 :25:06 GMT \\ r \\ n \\ r \\ n“,” {\\“ Content-Type \\”:\\“ application / json \\”,\\“ Access-Control-Allow-Origin \\”:\\“ * \\” ,\\“ Access-Control-Allow-Methods \\”:\\“ GET,PUT,POST,DELETE \\”,\\“ Access-Control-Allow-Headers \\”:\\“ Content-Type,Last-modified,Connection,Access -Control-Allow-Origin,Access-Control-Allow-Methods,Date \\“,\\” Access-Control-Expose-Headers \\“:\\” Content-Type,Last-modified,Connection,Access-Control-Allow-Origin ,Access-Control-Allow-Methods,Date \\“}”]日期:2014年2月3日星期一09:25:38 GMT
我認為這是隱瞞的問題。 我的問題是,如果有人對生成動態標頭有任何想法,或者有人可以對此有所了解,那將非常有幫助。
為什么我要這樣做? 由於跨域請求問題,因此我無法控制外部服務器。 因此,從我的Node.js端,我需要附加“允許跨域標頭”,以便可以進行跨域請求。
從Node.JS文檔中:
//response.writeHead(statusCode, [reasonPhrase], [headers])
// number string object
var body = 'hello world';
response.writeHead(200, {
'Content-Length': body.length,
'Content-Type': 'text/plain' });
您無需創建將對象推入其中的數組,也可以將curlHeadersResp
和resHeaders
結合在一起:
Object.keys(curlHeadersResp).forEach(function (element) {
resHeaders[element] = curlHeadersResp[element;
});
在您編寫標頭的位置,您無需對對象進行字符串化,只需:
res.writeHead(200, resHeaders);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.