我有一个运行我的API的restify服务器,我正在定义cors中间件如下:
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser({
multiples: true,
mapParams: false
}));
server.pre(restify.CORS())
server.use(restify.fullResponse())
server.use(
function crossOrigin(req,res,next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
return next();
});
但我总是收到此错误消息:
跨源请求已阻止:同源策略禁止在https://myroute处读取远程资源...(原因:CORS预检频道未成功)。
我做错了什么?
答案 0 :(得分:1)
之所以发生这种情况是因为restify.CORS()在新版本中被弃用了,至少我在这里看到了:
https://github.com/restify/node-restify/issues/1151
"将在即将发布的5.x版本中弃用resresy CORS插件,转而使用https://github.com/TabDigital/restify-cors-middleware"
我换了这个插件,一切都恢复了。
答案 1 :(得分:0)
变化:
server.pre(restify.CORS())
为:
server.use(restify.CORS())