常规 Ajax 跨域请求都是服务端输出
Access-Control-Allow-Origin: *
允许任何来源的跨域请求。
但是这种方法并不能正常使用 Cookie,要使用 Cookie 还需要另外 输出
Access-Control-Allow-Credentials: true
注意 此时 Access-Control-Allow-Origin: * 就不能使用了,必须限定具体来源如 Access-Control-Allow-Origin: http://127.0.0.1
对应的 JS 代码为
var url = "http://xxxx.com/index.php";
// fetch
fetch(url, {
mode: "cors",
credentials: "include" // 关键
})
// 原始
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.withCredentials = true; // 关键
xhr.send();
// jQuery 全局设置
$.ajaxSettings.xhrFields = $.ajaxSettings.xhrFields || {};
$.ajaxSettings.xhrFields.withCredentials = true;
// jQuery 请求时单独设置
$.ajax({
type: "GET",
url: url,
xhrFields: {
withCredentials: true // 关键
},
crossDomain: true
})