当前位置: 首页 > 知识库问答 >
问题:

在普通节点中设置自定义响应头。js

夹谷飞龙
2023-03-14

我使用Node.js的情况是这样的:

Client --> Node.js --> External Rest API

因此,反之亦然。根据要求,我需要从externalrestapi捕获响应头并将其附加到节点。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'
                 };

我在一个变量中得到外部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 Content-Type: Application/json\r\n Transport-Encode: chunked\r\n日期:周一,03 Feb2014 09:25:06GMT\r\n\r\n","{\"Content-Type\":\"Application/json\",\"访问-控制-允许-起源\":\"*\",\"访问-控制-允许-方法\":\"GET, PUT, POST, DELETE\",\"访问-控制-允许-报头\":\"内容-类型,最后修改,连接,访问-控制-允许-起源,访问-控制-允许-方法,日期\",\"访问-控制-暴露-报头\":\"内容-类型,最后修改,连接,访问控制-允许-起源,访问控制-允许-方法,日期\"}"]日期:周一,03 Feb2014 09:25:38GMT

我认为这是一个凝聚的问题。我的问题是,如果有人有任何关于生成动态头的想法,或者有人可以对此提供一些帮助,这将非常有用。

我为什么要这样做?因为跨域请求问题,所以我无法控制外部服务器。所以从我的节点。js端我需要附加Allow cross domain头,以便跨域请求成为可能。


共有1个答案

戴正阳
2023-03-14

从节点。JS文档:

//response.writeHead(statusCode, [reasonPhrase], [headers])
//                    number      string          object

var body = 'hello world';
response.writeHead(200, {
  'Content-Length': body.length,
  'Content-Type': 'text/plain' });

您不需要创建数组,只需将对象推送到数组中,即可将CurlHeaderRespresHeaders连接在一起:

Object.keys(curlHeadersResp).forEach(function (element) {
    resHeaders[element] = curlHeadersResp[element;
});

在写标题的地方,你不需要对对象进行字符串化,只需:

res.writeHead(200, resHeaders);
 类似资料:
  • 这里是我的拦截器方法,我想在这里设置自定义响应,告诉UI发生了什么 并且在web.xml中 spring-servlet.xml 当会话超时时,它在返回false后不发送任何响应。连下面的都不行

  • 问题内容: 我正在努力实现以下目标。 从Request中读取自定义标头及其值: 现在,在响应时,我想在HTTP响应中返回相同的标头对。 我正在使用JAX-RS Web服务的Jersey 2.0实现。 当我发送请求URL时,也会传递请求标头(目前,虽然是Firefox插件-对其进行硬编码)。 收到对该URL的请求后,将调用以下方法: 我该如何实现?任何指针都很棒! 问题答案: 只需注入a 作为方法参

  • 我想从我的脚本中实现一个自定义的nginx缓存控制方法,通过使用自定义标头:"Do-Cache"。我用在nginx的超文本传输协议块: 在nginx的服务器块中: 因此,对于Do-Cache: Public,nginx应该缓存响应。否则不会。 但这种配置不起作用。通过在日志中调试,和的值是正确的,直到它们在nginx的服务器块中使用为止。如果在服务器块中使用它们(,或简单的),则变量获得“1”值,

  • 基于我之前的问题,我现在需要在响应中添加一个标题。 根据留档,我可以简单地将标头和另一个属性添加到对象。 当我对此进行测试时,它似乎没有携带标头值。 根据这篇文章,为重定向请求设置标题是不可能的。所以除了重定向,也许我应该试试别的? 有什么想法吗?

  • 问题内容: 这是我的代码: 但是,当我从浏览器向服务器发出请求时,出现此错误: 我也尝试过这种方法,在请求之后设置响应头: 没有骰子。我犯了同样的错误。有没有一种方法可以只在route函数中设置响应头?这样的事情将是理想的: 但我还是找不到这样做。请帮忙。 编辑 如果我使用POST请求卷曲URL,如下所示: 我得到这个回应: 有任何想法吗? 问题答案: 你可以很容易地做到这一点: 查看和 但是有些

  • 问题内容: 我正在实现一个站点登录名,该登录名采用电子邮件/密码组合,检索API令牌,并将其返回给用户以存储(加密)在localStorage中。 目前,在成功发布到,该应用程序将用户重定向到索引页,附有作为查询条件,像这样的令牌: 这可以正常工作,但我希望保持URL尽可能整洁,并将令牌设置为标头: -ing 显示标题设置正确,但是当我将请求登录到索引页面时,它没有显示: 任何建议表示赞赏! 问题