前臺調用後臺的接口,若是不是同一個域,就會產生跨域問題前端
瀏覽器出於安全考慮,發現請求是跨域的時候,會作一些校驗,校驗不經過,就會有跨域問題
發出的請求,不是本域的,協議,域名,端口,任何一個不同,瀏覽器都會認爲是跨域
若是發出的不是XHR請求,即便不是本域的,瀏覽器不會認爲是跨域
命令行參數啓動:經過命令行參數啓動瀏覽器(--disable-web-security), 瀏覽器不會檢查
MacOS命令行:
open -n /Applications/Google Chrome.app/ --args --disable-web-security —user-data-dir=/Users/你電腦的名字/MyChromeDevUserData/web
jsonp是用動態建立的script標籤對進行請求 /get?callback=123
發出的請求不是xhr類型,type是script類型,瀏覽器不作校驗 callback的內容,就是函數名,返回的數據,是做爲函數的參數
-服務器須要改動代碼 -只支持get方法 -發送的不是xhr請求
跨域資源共享CORS:在響應頭增長指定的字段,容許對方調用json
Access-Control-Allow-Origin "*" 容許全部域跨域調用 "http://www.sanjieke.cn" 容許這個域跨域調用 Access-Control-Allow-Method "*" 容許全部的方法 "GET" 指定容許的方法 帶cookie的跨域,origin必須是全匹配,不能是*號,須要增長Access-Control-Allow-Credentials爲true,前端也須要設置xhr.withCredentials = true 帶上cookie 帶自定義頭的跨域,增長Access-Control-Allow-Headers,值爲自定義頭
更詳細的解讀 https://segmentfault.com/a/11...segmentfault