原因:
- 瀏覽器限制
- 跨域(協(xié)議铐达、域名照瘾、端口)
- XMR(XMLHttpRequest請求)
解決方法:
瀏覽器:命令行參數(shù)啟動基协,帶上參數(shù)--disable-web-security
XHR:使用JSONP,后臺服務(wù)器需要改動词爬。請求類型(type)為script,返回類型為javascript是趴。原理為動態(tài)創(chuàng)建script標(biāo)簽滞详,在script中發(fā)送請求。JSONP弊端:服務(wù)器需要改動代碼支持拂共,只支持GET方法牺弄,發(fā)送的不是XHR請求(沒有相關(guān)事件)。
跨域:被調(diào)用方支持跨域:增加Access-Control-Allow-Origin的header(CORS宜狐,帶Cookie時必須是全匹配势告,不能是*)蛇捌,調(diào)用方隱藏跨域:使用代理服務(wù)器轉(zhuǎn)發(fā)請求。
瀏覽器如何判斷請求是跨域
簡單請求(先執(zhí)行咱台,后判斷):方法為GET络拌、HEAD、POST回溺,請求header里面無自定義頭春贸,Content-Type為以下幾種:text/plain、multipart/form-data遗遵、application/x-www-form-urlencoded萍恕。
非簡單請求(先發(fā)送預(yù)檢命令,通過后再發(fā)送請求):put车要,delete方法的ajax請求允粤,發(fā)送json格式的ajax請求,帶自定義頭的ajax請求屯蹦。