为了账号安全,请及时绑定邮箱和手机立即绑定

ajax put请求的跨域问题

ajax put请求的跨域问题

芜湖不芜 2018-09-03 09:27:17
为什么下面的post没问题,但是put请求会报错:XMLHttpRequest cannot load http://localhost:8001/service. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63343' is therefore not allowed access.客户端    $.ajax({        url: 'http://localhost:8001/man',        method: 'POST',        success: function (data) {            console.log(data)        }    });  $.ajax({        url: 'http://localhost:8001/service',        method: 'PUT',        success: function (data) {            console.log(data)        }    });服务端
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

问题在于预请求,在发起PUT请求之前会先发起一次OPTIONS请求,报错是针对OPTIONS这次请求,请求没有检查到headers中设置的Access-Control-Allow-Origin

解决办法:
添加一个对于OPTIONS请求的处理

app.options('/service', function (req, res) {
    res.header("Content-Type", "application/json; charset=utf-8");
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS");
});


查看完整回答
反对 回复 2018-10-27
  • 1 回答
  • 0 关注
  • 1825 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信