NodeJS Express:已启用CORS但仍无法正常工作

时间:2017-04-09 06:15:09

标签: angularjs node.js

我对CORS有很大的问题 我使用NodeJS Express在AngularJS中开发,我在另一个IP / PORT中运行另一个API(两者都在同一台机器上)。我在Angular中编写函数来使用API​​。

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

  

否'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' 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。

3 个答案:

答案 0 :(得分:1)

将它放在角度

的http请求中
$http.post(url, {withCredentials: true, ...})

此外,您可以在app.js中为所有请求添加此配置:

$httpProvider.defaults.withCredentials = true;

答案 1 :(得分:0)

将以下内容放入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) {

答案 2 :(得分:0)

This is what works for me on Node.js v6.4.0 and Express 4.13.4

There was no need for me to use the cors module. Simply:

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