【发布时间】:2014-02-03 09:27:55
【问题描述】:
我使用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\nServer: Apache-Coyote/1.1\r\nContent-Type: application/json\r\nTransfer-Encoding: chunked\r\nDate: Mon, 03 2014 年 2 月 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-允许来源,访问控制允许方法,日期\“}”] 日期:2014 年 2 月 3 日星期一 09:25:38 GMT
我认为这是连接的问题。我的问题是,如果有人对生成动态标题有任何想法,或者有人可以对此有所了解,那将非常有帮助。
我为什么要这样做?因为跨域请求问题,所以我无法控制外部服务器。因此,从我的 Node.js 方面,我需要附加 Allow cross domain headers,以便可以进行跨域请求。
【问题讨论】:
-
根据Node.js http Docs,您应该在传递 JSON 字符串时将标头作为对象传递。
-
@LeonidBeschastny,是的,我试过了,但我得到的是
[object Object]
标签: javascript json node.js