[英]Can't achieve CORS with Express.js
我正在使用以下代码从在localhost:3000上运行的客户端发出PATCH请求:
axios.patch(
"http://localhost:3090/v1/users/etc/etc/etc", {
name,
url,
}, {
headers: {
authorization: AUTH_TOKEN()
}
}
)
到服务器配置如下:
var app = express();
var cors = require('cors');
//etc
//var whitelist = [
// 'http://localhost:3000',
// 'localhost:3000'
//];
//passing this to cors() doesn't help
//var globalCorsOptions = {
// origin: function(origin, callback) {
// callback(null, whitelist.indexOf(origin) !== -1);
// }
//};
app.use(morgan('combined'));
app.use(cors());
app.options('*', cors());
app.use(bodyParser.json({type:'*/*'}));
app.use('/v1', router);
var port = process.env.PORT || 3090;
var ip = process.env.IP || 'localhost';
var server = http.createServer(app);
server.listen(port, ip);
但是请求只是挂起。 我可以进行POST / GET操作,但不能执行DELETE / PATCH。 预检进行得很好,但是随后的实际请求会无限期地“停滞”。 以下是每个请求的标头:
很抱歉问这个非常标准的问题,但是我已经尝试了一切。
编辑:将以下内容添加到路由器(仍然无法正常工作):
var router = express.Router();
router.use(function(req, res, next) {
res.header("Access-Control-Allow-Headers", "PATCH,DELETE,OPTIONS,GET,POST");
next();
});
在服务器上,您必须在响应中添加以下标头:
headers.Add(“ Access-Control-Allow-Headers”,“ PATCH,DELETE,GET,POST”);
实际上,您要允许所有HTTP方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.