gpt4 book ai didi

angularjs - 如何在 MEAN STACK 网络应用程序中启用 CORS?

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:07 25 4
gpt4 key购买 nike

我正在开发一个 MEAN-STACK 应用程序。使用 Node 的 Mean-cli packgae。我在其中使用 darksky weather API,包名中的信息。我在 Mean 应用程序的自定义文件夹中还有 4 个其他包。我如何启用 CORS 以便所有 API 请求都不会失败并返回响应。

我用谷歌搜索,发现我必须添加这个中间件。

 //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();
}

我应该在哪里添加这个。在我们使用跨域请求的每个包中或在某些全局文件中。

我试图在服务器路由文件中添加这个中间件?信息包和配置文件的express.js文件中,但是没有用。

最佳答案

因此,您的问题的实际解决方案是使用带有 forecast.io api 的 jsonp 回调,因为它们没有为客户端访问启用 CORS header 。像这样使用 $http.jsonp

$http.jsonp(url + lat + ',' + lng + '?callback=JSON_CALLBACK');

通常要在您的 expressjs 服务器上启用 CORS,请执行以下操作。

  1. 安装 cors使用 npm install cors
  2. 的 express 模块
  3. 要求它 var cors = require('cors');
  4. 使用 app.use(cors());
  5. 在您的 express 应用程序实例上设置它

cors 模块将自动在响应中添加所有与 aors 相关的 header 。或者,您也可以配置很多选项。检查official docs

如果你想自己做,你可以做以下事情

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);

关于angularjs - 如何在 MEAN STACK 网络应用程序中启用 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30216583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com