Ajax 跨域携带 Cookie

常规 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
})