我的代码:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header("Access-Control-Allow-Headers: X-Requested-With");
上面的代码我正在使用带头文件的api控制器。在html页面中,我使用angularjs表单字段。当我提交表单时,我收到了错误
(原因:缺少CORS标题'Access-Control-Allow-Origin')
当我使用文件输入时,我收到了(CORS header 'Access-Control-Allow-Origin' missing)
。
答案 0 :(得分:0)
下面
我喜欢把我的CORS处理程序作为我的Express服务器中的一个中间件。我假设你的是app.js,因为你没有提到其他服务器文件。
var allowCrossDomain = function(req, res, next) {
if ('OPTIONS' == req.method) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
res.send(200);
}
else {
next();
}
};
app.use(allowCrossDomain);
你需要首先在你的server.js文件中定义这个,你需要告诉服务器期望跨域请求。
如果您仍然不了解CORS的工作原理或如何配置,请阅读以下文章。
http://jonathanmh.com/how-to-enable-cors-in-express-js-node-js/ http://justindavis.co/2015/08/31/CORS-in-Express/
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
res.header("Access-Control-Allow-Methods", "GET, POST","PUT");
next();
});
或者您也可以从您的router.post发送它以进行实例
route.post('/abc', function(req,res,next){
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
return res.send(200);
});
然后从角度部分发送标题。
答案 1 :(得分:0)
您在与客户项目不同的项目中调用Web服务。并且您已在Client项目中添加了服务引用。因此,当您从JavaScript调用服务时,您不允许这样做 它发生了,因为您的服务项目没有启用 CORS 。
请参阅此文章:What is CORS?
有一种方法可以解决这个问题,使用 JSONP
。 example here
web-config
文件中添加Header Access-Control-Allow-Origin Global.asax.cs
example here
在两种方式中,无需在 RESTclient 项目解决方案中进行任何修改。