由於在同一個瀏覽器窗口中可以同時打開多個網站的頁面,並且它們都處於同一個會話中,若是不由止跨域訪問則會形成用戶隱私數據泄露和登陸身份冒用的問題,因此瀏覽器會使用同源策略限制跨域訪問。跨域
在瀏覽器中,經過JS代碼訪問不一樣域名下的URL或者iframe時,會被禁止訪問。而不是經過JS代碼進行的跨域訪問不存在跨域問題!好比跨域加載圖片,引用JS文件,下載各類文件,使用iframe跨域嵌入其餘網站的頁面都是能夠的。瀏覽器
跨域訪問被禁止有時會給應用開發帶來阻礙,但在符合特定條件時也有相應的方法在保證安全的狀況下可以解決跨域訪問問題:安全
1 在對方服務器的響應頭中添加Access-Control-Allow-Origin容許哪些域進行跨域訪問,它的指能夠是域名或者*。(這種方案只有在對方信任、不在意、安全的狀況下才能使用。)服務器
2 若是域名都是同一個根域名的子域名,則可使用document.domain="根域名"來統一JS執行環境的域名。(這種方案只能在同一個公司和組織的內部使用)dom
3 使用JSONP(JSON Padding)。瀏覽器不限制經過script標籤引入其餘網站的腳本,因此能夠經過JS向頁面動態添加一個script標籤並指定其src爲一個特殊的url,對方的服務器針對這個url的請求,會進行特殊的處理。網站
4 將要請求的URL發送給本身的服務端,讓服務端發起請求(服務端沒有跨域限制),服務端請求成功後,將數據再傳給瀏覽中的JS(這種方式叫作服務端代理請求,這種方式只要本身的服務端支持一下就ok了,是比較經常使用的方案,沒有任何限制)。url
5 使用任何能夠利用的瀏覽器端中間機制實現跨域交換數據。代理