原因:
是指a頁面想獲取b頁面資源,如果a、b頁面的協議、域名、端口、子域名不同,或是a頁面為ip地址,b頁面為域名地址,所進行的訪問行動都是跨域的,而瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。
解決方案有十種:
1.通過Jsonp實現跨域 (常用)
2.通過修改document.domain來跨子域
3.window.name+iframe跨域
4.跨文檔消息傳輸window.postMessage
5.通過CORS(跨域資源共享)解決AJAX跨域
6.通過Nginx反向代理
7.Nodejs中間件代理(兩次跨域)
8.websocket協議跨域
9.localhost.hash+iframe跨域
10.通過設置Access-Control-Allow-Origin
PS:前面九種的具體原理和方案參考:九種跨域方案實現原理