Ajax请求一个目标地址为非本域(协议、域名、端口任意一个不同)的web资源,并根据响应获得外部应用数据。ajax跨域请求时不会带上cookie等用户认证凭据的。我们请求一个外部服务时,浏览器会基于安全问题拒绝授权访问。
解决方案:
1.设置服务端设置响应头
Header("Access-Control-Allow-Origin", "*");
Header("Access-Control-Allow-Credentials", "true");
值可设为:
1. ‘*’ 泛型支持全域名。
2. 'request.getHeader("Origin")' 获取请求域的域名。
3. ‘http://a’ 指定响应的域名。
后端JAVA代码:
response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));//指定域名
response.addHeader("Access-Control-Allow-Credentials", "true");//响应cookie
前端代码JavaScript:
$.ajax({
type: "GET",
url: requestURL,
data: {json: JSON.stringify(jsonArray)}, //传入组装的参数
cache: false,//不缓存当前页面
dataType: "JSON",
xhrFields: {
withCredentials: true//跨域请求时发送cookie
},
crossDomain: true,//跨域
success: function (data) {
if (data.code == "10000") {
}
}
});