如何在 express.js 资产上设置响应标头

IT技术 javascript node.js express
2021-02-06 22:05:14

我需要将 CORS 设置为在 express 提供的脚本上启用。如何在这些返回的公共/资产响应中设置标头?

6个回答

npm 上至少有一个中间件用于处理 Express 中的 CORS:cors[见@mscdex 答案]

这是如何设置自定义响应标头,来自ExpressJS DOC

res.set(field, [value])

将标题字段设置为值

res.set('Content-Type', 'text/plain');

或传递一个对象以一次设置多个字段。

res.set({
  'Content-Type': 'text/plain',
  'Content-Length': '123',
  'ETag': '12345'
})

别名为

res.header(field, [value])
那我用res.write('content')?
2021-03-15 22:05:14
@BrunoCasali 额外的标题默认被浏览器阻止,请参阅stackoverflow.com/a/37931084/1507207
2021-03-28 22:05:14
由于某种原因res.set对我不起作用,但cors中间件恰到好处地完成了这个技巧。
2021-04-07 22:05:14
我怎样才能得到这些值?因为我在resobject 中设置了这些值当我尝试查看此内容时,我使用res.headers;
2021-04-08 22:05:14
此行应在写入头部之前使用。
2021-04-13 22:05:14

这太烦人了。

好的,如果有人仍然有问题或者只是不想添加另一个库。您所要做的就是将这个中间件代码行放在您的路由之前。

Cors 示例

app.use((req, res, next) => {
    res.append('Access-Control-Allow-Origin', ['*']);
    res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.append('Access-Control-Allow-Headers', 'Content-Type');
    next();
});

// Express routes
app.get('/api/examples', (req, res)=> {...});
这点相对于顺序来说很重要。我想知道它是否真的很重要,因为我在改变它时看到了不同的行为。好的。谢谢
2021-04-05 22:05:14
很好:完美解决了问题。添加整个依赖项来执行这 6 行代码并不是我向任何人推荐的道路......
2021-04-13 22:05:14

您可以通过使用 cors 来做到这一点。cors 将处理您的 CORS 响应

var cors = require('cors')

app.use(cors());

简答:

  • res.setHeaders - 调用原生 Node.js 方法

  • res.set - 设置标题

  • res.headers - res.set 的别名

@klode 的回答是对的。

但是,您应该设置另一个响应标头,以使其他人可以访问您的标头。


例子:

首先,您在响应标头中添加“页面大小”

response.set('page-size', 20);

然后,您需要做的就是公开您的标头

response.set('Access-Control-Expose-Headers', 'page-size')
我发现如何阅读文档: javascript Access-Control-Expose-Headers: * // or Access-Control-Expose-Headers: <header-name>, <header-name>, ...
2021-03-14 22:05:14
如果你有 2 个标题怎么办?像这样:javascript res.set("...","..."); res.set("...","...."); 现在你如何公开这两个标题?
2021-03-25 22:05:14
我被困了一个多小时,试图弄清楚为什么我的自定义标题都没有到达另一端。揭露他们就是答案。太感谢了!为什么这个标题在 Express 文档(或我迄今为止阅读的任何关于自定义标题的文章)中的提及为零是非常令人费解的。
2021-03-29 22:05:14