【问题标题】:NodeJS Express: CORS enabled and still not workingNodeJS Express:CORS 已启用但仍无法正常工作
【发布时间】:2017-09-04 08:18:24
【问题描述】:

我在使用 CORS 时遇到了一个大问题。
我正在使用 NodeJS Express 在 AngularJS 中进行开发,并且我在另一个 IP/PORT 中运行了另一个 API(两者都在同一台机器上)。我在 Angular 中编写函数来使用 API。

当我尝试获取/发布/删除/放置时,我收到此消息:

请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://127.0.0.1:3000' 不允许访问。

Stackoverflow 中有很多配置 app.js 的解决方案。我尝试过但仍然无法正常工作的一种配置:

app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});  

我已经安装了 npm cors 模块。我编辑了我的 app.js 以启用 cors 模块,但仍然无法正常工作:

var express = require('express');
var cors = require('cors');  
app.use(cors());  

有什么解决办法吗?我不知道如何解决它!顺便说一句,我正在使用 Chrome。

【问题讨论】:

  • 您正在将它们添加到 API 服务器,对吧?
  • 您的 ajax 调用是什么样的?他们都是GET请求吗?他们有任何自定义标题吗? DELETE 和 PUT 将需要支持 OPTIONS 命令,因为浏览器将首先使用 OPTIONS 预检这些命令以查看是否允许跨域。自定义标头还可以强制执行飞行前 OPTIONS 请求。
  • @robertklep 哇!我认为我需要配置 NodeJS 服务器而不是 API!现在它工作正常:D
  • 维克多,你是什么意思?

标签: angularjs node.js


【解决方案1】:

把这个放在你的http请求中

$http.post(url, {withCredentials: true, ...})

您也可以将此配置放在 app.js 中以处理所有请求:

$httpProvider.defaults.withCredentials = true;

【讨论】:

    【解决方案2】:

    将以下内容放入您的 app.js 文件中:

    app.use(function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        next();
    })
    

    然后在每个路由中使用“CORS”模块:

    router.post('/create',cors(), function (req,res) {
    

    【讨论】:

      【解决方案3】:

      这对我来说适用于 Node.js v6.4.0 和 Express 4.13.4

      我不需要使用 cors 模块。简单地说:

      app.use(function (req, res, next) {
          res.header("Access-Control-Allow-Origin", "*")
          res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
          next()
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-29
        • 2010-12-30
        • 2011-06-16
        • 2013-05-21
        • 2011-08-12
        • 2012-05-29
        • 2020-10-07
        • 2017-02-11
        相关资源
        最近更新 更多