加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

节点表达服务器不响应ajax

发布时间:2020-12-16 02:52:23 所属栏目:百科 来源:网络整理
导读:我是node.js的新手并且遇到了cors问题.我发送客户端ajax get请求从一个快速服务器到另一个,但至少我无法从app.all(‘*’,函数(req,res,next){console.log(“request:”)得到响应REQ)}) GET请求看起来像: $.ajax({ type: 'GET',url: 'http://localhost:8082
我是node.js的新手并且遇到了cors问题.我发送客户端ajax get请求从一个快速服务器到另一个,但至少我无法从app.all(‘*’,函数(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)
在我的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) {
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读