Dr.*_*all 141 javascript node.js express
我需要在快递服务的脚本上设置CORS.如何在公共/资产的这些返回响应中设置标头?
klo*_*ode 317
npm中至少有一个中间件用于处理Express:cors中的 CORS .[见@mscdex答案]
这是从ExpressJS DOC设置自定义响应标头的方法
res.set(field, [value])
Run Code Online (Sandbox Code Playgroud)
将标题字段设置为值
res.set('Content-Type', 'text/plain');
Run Code Online (Sandbox Code Playgroud)
或传递一个对象一次设置多个字段.
res.set({
'Content-Type': 'text/plain',
'Content-Length': '123',
'ETag': '12345'
})
Run Code Online (Sandbox Code Playgroud)
别名为
res.header(field, [value])
Run Code Online (Sandbox Code Playgroud)
Pro*_*imo 32
这太烦人了.
好的,如果有人仍然有问题或者只是不想添加另一个库.您所要做的就是在您的路线之前放置这个中间件代码行.
科尔斯的例子
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)=> {...});
Run Code Online (Sandbox Code Playgroud)
kpa*_*ean 10
@klode 的回答是对的。
但是,您应该设置另一个响应标头,以使其他人可以访问您的标头。
例子:
首先,您在响应标头中添加“页面大小”
response.set('page-size', 20);
Run Code Online (Sandbox Code Playgroud)
然后,您需要做的就是公开您的标头
response.set('Access-Control-Expose-Headers', 'page-size')
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以用cors来做到这一点.cors将处理您的CORS响应
var cors = require('cors')
app.use(cors());
Run Code Online (Sandbox Code Playgroud)
小智 7
首先在响应头中添加“字段”
response.set('field', 'value');
Run Code Online (Sandbox Code Playgroud)
然后你需要做的就是公开你的标题
response.set('Access-Control-Expose-Headers', 'field')
Run Code Online (Sandbox Code Playgroud)
您还可以添加中间件来添加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();
}
};
Run Code Online (Sandbox Code Playgroud)
小智 5
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();
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
177840 次 |
最近记录: |