【发布时间】: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
-
维克多,你是什么意思?