我需要将CORS设置为在由express提供的脚本上启用。我如何设置这些公共/资产返回的响应头?
npm中至少有一个中间件用于处理Express中的CORS: 歌珥。[见@mscdex answer]
这是如何设置自定义响应头,从ExpressJS医生
res.set(field, [value])
将报头字段设置为value
res.set('Content-Type', 'text/plain');
或者传递一个对象一次设置多个字段。
res.set({ 'Content-Type': 'text/plain', 'Content-Length': '123', 'ETag': '12345' })
混叠
res.header(field, [value])
npm中至少有一个中间件用于处理Express中的CORS: 歌珥。
您可以使用cors来做到这一点。cors将处理您的cors回复
var cors = require('cors') app.use(cors());
@klode的答案是正确的。
但是,您应该设置另一个响应标头以使其他人可以访问您的标头。
例子:
首先,在响应头中添加“page-size”
response.set('page-size', 20);
然后,你所需要做的就是暴露你的头文件
response.set('Access-Control-Expose-Headers', 'page-size')
这太烦人了。
好的,如果有人仍然有问题或只是不想添加另一个库。你所要做的就是把这个中间件代码行放在你的路由之前。
歌珥的例子
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)=> {...});
你也可以添加一个中间件来添加CORS头,像这样就可以了:
/** * Adds CORS headers to the response * * {@link https://en.wikipedia.org/wiki/Cross-origin_resource_sharing} * {@link http://expressjs.com/en/4x/api.html#res.set} * @param {object} request the Request object * @param {object} response the Response object * @param {function} next function to continue execution * @returns {void} * @example * <code> * const express = require('express'); * const corsHeaders = require('./middleware/cors-headers'); * * const app = express(); * app.use(corsHeaders); * </code> */ module.exports = (request, response, next) => { // http://expressjs.com/en/4x/api.html#res.set response.set({ 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'DELETE,GET,PATCH,POST,PUT', 'Access-Control-Allow-Headers': 'Content-Type,Authorization' }); // intercept OPTIONS method if(request.method === 'OPTIONS') { response.send(200); } else { next(); } };
简短的回答:
res.setHeaders -调用本机Node.js方法
res.setHeaders
res.set设置头文件
res.set
res.headers - res.set的别名
res.headers
service.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization"); next(); });
首先在响应头中添加“field”
response.set('field', 'value');
然后你要做的就是暴露你的头文件
response.set('Access-Control-Expose-Headers', 'field')
使用express.js 4.18.2的最新版本:
如果你正在使用static中间件,并且想要改变响应头,你应该:
static
app.use(express.static('./', { setHeaders: function(res) { res.set("Content-Security-Policy", "default-src 'self'"); } }));