我是node.js的新手并且遇到了cors问题.我发送客户端ajax get请求从一个快速服务器到另一个,但至少我无法从app.all(‘*’,函数(req,res,next){console.log(“request:”)得到响应REQ)})
GET请求看起来像:
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)
在我的PC上本地运行节点服务器时,一切正常. curl命令工作正常.
有机会,这是托管/端口的问题还是我还缺少什么?
解决方法
您不需要在$ajax调用上设置CORS标头,因为浏览器在HTTP响应标头中需要这些标头.
对于跨域AJAX,请确保在$ajax选项上设置crossDomain标志:
$.ajax({ url: url,type: 'POST',data: payload,dataType: 'json',crossDomain: true })
在快速端点中处理CORS请求的一种干净方法是创建一个中间件,您可以添加该中间件来表示响应跨源请求的路由:
cors.js
module.exports = function(req,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) { });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。