我尝试使用cors
模块通过角度$http
访问节点路由。我试过一个简单的
app.use(cors());
但仍然收到错误。我尝试过添加the cors documentation a whitelist of URLs
var corsOptions = {
origin: function(origin, callback){
var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
callback(null, originIsWhitelisted);
}
};
app.get('/someroute/:someparam/', cors(corsOptions), function(req, res, next){
mymodule.getData(req.params.someparam, function(err, data){
if (err){
console.log('error with route', err);
}else{
res.json({result: data});
}
});
});
但我仍然收到错误
XMLHttpRequest无法加载localhost:8888 / someroute / undefined。交叉源请求仅支持协议方案:http,数据,chrome,chrome-extension,https,chrome-extension-resource。
我认为使用cors模块是为了避免这个问题。我怎么解决?
答案 0 :(得分:3)
这里的问题是您的客户需要提出URL
的请求http://localhost:8888/someroute/undefined
相反,您的客户正在提出
请求localhost:8888/someroute/undefined
浏览器使用方案8888
将其解释为对主机localhost
的请求。但是,localhost
并不是Chrome支持CORS的方案;仅限http
,https
,data
等内容。
某处,您的客户端代码执行类似
的操作xhr.send("localhost:8888/...")
但它需要一个领先的方案,例如http://
或https://
。
请注意,如果您尝试使用file
或about
方案请求资源,则会收到类似错误。