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

查看:434
本文介绍了javascript - 使用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);}
});

解决方案

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

这篇关于javascript - 使用jquery ajax,跨域的时候,默认会先发送option请求,如何能给options请求也设置头部?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆