什么是跨域請(qǐng)求?簡(jiǎn)單地說(shuō),當(dāng)一個(gè)頁(yè)面的腳本試圖去訪問(wèn)另一個(gè)頁(yè)面的數(shù)據(jù)時(shí),由于瀏覽器的同源策略,這時(shí)候就會(huì)產(chǎn)生跨域操作。
在這種情況下,我們可以使用jQuery提供的ajax方法進(jìn)行跨域訪問(wèn)。然而,這個(gè)方法還需要解決設(shè)置cookie的問(wèn)題,否則跨域訪問(wèn)時(shí)無(wú)法存儲(chǔ)cookie,導(dǎo)致登錄態(tài)不能正常維持。
$.ajax({ url: 'https://xxx.com/api', type: 'post', dataType: 'json', xhrFields:{ withCredentials:true }, crossDomain: true, success: function (data) { //處理返回的數(shù)據(jù) }, error: function (xhr, textStatus, errorThrown) { //錯(cuò)誤處理 } });
在上述代碼中,我們需要注意幾個(gè)點(diǎn):
1. 設(shè)置xhrFields可以讓ajax帶上cookie。需要注意的是,withCredentials:true也需要在后端接口中允許。
2. 同時(shí)需要設(shè)置crossDomain為true,以確保該請(qǐng)求為跨域請(qǐng)求。
通過(guò)以上的設(shè)置,我們就可以在跨域請(qǐng)求中成功存儲(chǔ)cookie。記住這些小技巧,讓你的代碼更加優(yōu)雅!