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


当前回答

这太烦人了。

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

歌珥的例子

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)=> {...});

其他回答

这太烦人了。

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

歌珥的例子

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)=> {...});

简短的回答:

res.setHeaders——调用本地Node.js方法 Res.set -设置报头 Res.headers - res.set的别名

首先在响应头中添加“field”

response.set('field', 'value');

然后你要做的就是暴露你的头文件

response.set('Access-Control-Expose-Headers', 'field')

@klode的答案是正确的。

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


例子:

首先,在响应头中添加“page-size”

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

然后,你所需要做的就是暴露你的头文件

response.set('Access-Control-Expose-Headers', 'page-size')

使用express.js 4.18.2的最新版本:

如果你正在使用静态中间件,并且想要改变响应头,你应该:

app.use(express.static('./', {
  setHeaders: function(res) {
    res.set("Content-Security-Policy", "default-src 'self'");
  }
}));