当前位置: 首页 > 面试题库 >

如何在MEAN STACK网络应用中启用CORS?

夏侯英纵
2023-03-14
问题内容

我正在使用节点的Mean-cli packgae开发MEAN-STACK应用程序。在其中我使用Darksky Weather
API(程序包名称Information)中。我在平均值应用程序的自定义文件夹中还有其他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();
}

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

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


问题答案:

因此,解决您的问题的实际解决方案是将jsonp回调函数与Forecast.io api
一起使用,因为它们尚未为客户端访问启用CORS标头。使用$http.jsonp这样的

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

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

  1. 安装cors模块以进行快递npm install cors
  2. 要求它 var cors = require('cors');
  3. 在您的Express应用实例上设置 app.use(cors());

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


 类似资料:
  • HTTP 分布式系统

  • HTTP 超文本传输协议 (HTTP) 是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。 Requests Python 基本的 urllib2 模块提供了大部分你所需要的 HTTP 功能,但它的 API 彻底被打乱了。它是在一个和现今完全不同的时期 --- 以及一个不一样的网络被构建的。一个简单的任务便需要耗费他大量的工作 (即使重写函数没用)。 Req

  • 应用交付网络 传统计算机网络主要关注的是网络的互连互通,而应用则关注的是业务逻辑功能,如何将两者合在一起,让网络更好的支持应用,同时应用最优化的利用网络,这就是应用交付网络(Application Delivery Networking,ADN)。 应用交付网络围绕着应用和网络主要为企业解决一下几个问题: 安全 - 目前业界已经达成共识,网络安全对于网络应用的保障是至关重要的环 节。而在应用交付网

  • 18.9.1 模板: 制作、解析并使模板生效: var strTempl = template.Must(template.New("TName").Parse(strTemplateHTML)) 在网页应用中使用HTML过滤器过滤HTML特殊字符: {{html .}} 或者通过一个字段 FieldName {{ .FieldName |html }} 使用缓存模板(参考章节15.7)

  • 摘要 本文描述了如何在 RT-Thread 中利用标准 BSD Socket API 来开发网络应用。并给出了在正点原子 STM32F4 探索者开发板上运行 NTP(通过网络获取时间)和 MQTT(通过 MQTT 收发数据) 的代码示例。 简介 越来越多的单片机需要接入以太网来收发数据,市面上也有非常多的接入方案,可以用单片机加自带硬件协议栈的 PHY 芯片来接入网络,也可以单片机跑软件协议栈加

  • 我在测试在kotlin的协程里使用网络io是否会导致线程阻塞 测速结果是InputStream.read确实导致线程阻塞了,而不是挂起。 那么运行在统一个线程下的其他协程也不能运行了,我知道可以使用 这些方式把网络请求放入其他线程 但是我想知道的是如果这两个协程都必须运行在同一个线程里时,是否可以通过修改代码(比如异步io等方式)确保第一个协程能每秒打印一次,第二个协程能在接收到数据时及时打印。