节点快递服务器不响应ajax

我是node.js的新手,遇到了Cors问题。 我发送客户端ajax获取请求从一个快递服务器到另一个,但至less我不能从app.all('*', function(req, res, next){console.log("request: "+req)}) GET请求看起来像这样:

 $.ajax({ type: 'GET', url: 'http://localhost:8082/request' }); 

我也在ajax中设置标题:

 'beforeSend : function(xhr) { xhr.setRequestHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS'); xhr.setRequestHeader('Access-Control-Allow-Origin', '*'); xhr.setRequestHeader('Access-Control-Max-Age', '1000'); xhr.setRequestHeader('Authorization', '*')}, 

…或在node.js中设置cors模块:

 var cors = require('cors'); var app = express(); app.use(cors()); app.options('*',cors(),function(){ console.log("preflight") }); 

在firefox和chrome中,我都没有收到任何回应(在chrome中我得到了net::ERR_CONNECTION_REFUSED )当我的电脑在本地运行节点服务器时,一切正常。 curl命令也正常工作。 有没有机会,这是托pipe/端口的问题,还是我还错过了什么?

您不需要在您的$ ajax调用上设置CORS标头,因为HTTP 响应标头中的浏览器需要这些标头。

对于跨域AJAX,请确保您在$ ajax选项上设置了crossDomain标志:

 $.ajax({ url: url, type: 'POST', data: payload, dataType: 'json', crossDomain: true }) 

在快速端点中处理CORS请求的一种简单方法是创build一个中间件,您可以添加这个中间件来表示响应跨源请求的路由:

cors.js

 module.exports = 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'); next(); }; 

然后确保将中间件添加到快速端点:

 app.post(url, cors, function(req, res) { }); 

我有同样的问题,并解决了这个问题:

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