使用jquery ajax,跨域的时候,默认会先发送option请求,如何能给options请求也设置头部?

例如如下的请求:
会首先默认向目标地址发送options请求,这个请求并没有携带sessionId的头部。
当服务端服务端正确响应之后,浏览器才会发送真正的poost请求。
但是服务端要求每个请求必须携带sessionId,所以请问,如何在默认发送的options请求上携带sessionId的信息?

$.ajax({
    type:'post',
    url:'http://xx.x.x.xx:xxxx/xx/xxx',
    dataType:'json',
    contentType:'application/json',
    headers:{sessionId:'a52cb1d0-30b4-4b35-abc4-534915342506'},
    data:data,
    error:function(data){console.log(data);},
    success:function(data){console.log(data);}
});
阅读 14k
2 个回答

让服务端处理,这个 options 请求只是跨域复杂请求(Preflighted requests)的一次嗅探。
如果服务端兼容不了就是他们的接口实现并没有遵循此 CORS 的规范。
或者你们降级到 Simple requests,不过估计这样服务端改动更大。

你把ajax封装一层不就可以了吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题