Angularjs 如何在MEAN STACK web app中启用CORS?
我正在开发一个MEAN-STACK应用程序。使用node的MEAN-cli包。 其中我使用的是黑暗天气API, 在包名称信息中。我有4个其他包在自定义文件夹的平均应用程序。 我如何启用CORS,以便所有API请求都不会失败并返回响应 我在谷歌上搜索,发现我必须添加这个中间件Angularjs 如何在MEAN STACK web app中启用CORS?,angularjs,node.js,mean-stack,Angularjs,Node.js,Mean Stack,我正在开发一个MEAN-STACK应用程序。使用node的MEAN-cli包。 其中我使用的是黑暗天气API, 在包名称信息中。我有4个其他包在自定义文件夹的平均应用程序。 我如何启用CORS,以便所有API请求都不会失败并返回响应 我在谷歌上搜索,发现我必须添加这个中间件 //CORS middleware var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin
//CORS middleware
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'example.com');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
}
我应该在哪里添加这个。在我们使用跨源请求的每个包中或在某个全局文件中
我曾尝试在的服务器路由文件中添加此中间件?信息包和在confile的express.js文件中,但它不起作用。如果您只有一台express服务器,则只需添加一次中间件。您的其他模块可能作为中间件提供给服务器 如果在没有任何限定路径的情况下注册中间件函数,如
app.use(function(){…})
,则中间件将针对服务器处理的每个请求运行。任何给定的请求调用其他中间件并不重要
如果您有多个Express服务器同时运行(这是不太可能的),那么您需要将中间件添加到每个服务器。因此,您的问题的实际解决方案是使用带有forecast.io api的
jsonp
回调,因为它们没有为客户端访问启用CORS头。像这样使用$http.jsonp
$http.jsonp(url + lat + ',' + lng + '?callback=JSON_CALLBACK');
通常,要在expressjs服务器上启用CORS,请执行以下操作
var cors=require('cors')代码>
app.use(cors())在您的express app实例上设置它代码>
cors
模块将自动在响应上添加所有与AOR相关的头。或者,您也可以配置许多选项。检查
或
如果你想自己做,你可以做以下几点
var permitCrossDomainRequests = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
// some browsers send a pre-flight OPTIONS request to check if CORS is enabled so you have to also respond to that
if ('OPTIONS' === req.method) {
res.send(200);
}
else {
next();
}
};
然后启用CORS中间件
app.use(permitCrossDomainRequests);
在末尾启用路由
app.use(app.router);
尝试过这一点,但在本地和本地都不起作用aws@ashish_pbh您在控制台或chrome dev tools的网络选项卡上遇到了什么错误?该错误用于访问forecast io问题,而不是您自己的服务器。在服务器上启用cors不会解决问题使用jsonp从客户端javascript调用forecast.io API。提示:像这样使用
$http.jsonp
$http.jsonp(url+lat+,'+lng+'?callback=JSON_callback')代码>