摘要:比如域的頁面通過嵌入了一個域的頁面,可以通過以下方法實現和的通信通過跨域以上幾種都是雙向通信的,即兩個,頁面與或是頁面與頁面之間的,下面說幾種單項跨域的一般用來獲取數據,因為通過標簽引入的是不受同源策略的限制的。
跨域整理
@(前端筆記)
只要協議、域名、端口有任何一個不同,都被當作是不同的域。
由于瀏覽器的同源策略,其限制之一是不能通過ajax的方法情趣請求不同源的文檔。第二個限制是瀏覽器中不同域的框架(iframe)間是不能進行js的交互操作的。
修改document.domain的方式只適用于不同子域的框架間的交互。
因為父窗口可以對iframe進行URL讀寫,iframe也可以讀寫父窗口的URL,URL有一部分被稱為hash,就是#號及其后面的字符,它一般用于瀏覽器錨點定位,Server端并不關心這部分,應該說HTTP請求過程中不會攜帶hash,所以這部分的修改不會產生HTTP請求,但是會產生瀏覽器歷史記錄。此方法的原理就是改變URL的hash部分來進行雙向通信。每個window通過改變其他 window的location來發送消息(由于兩個頁面不在同一個域下IE、Chrome不允許修改parent.location.hash的值,所以要借助于父窗口域名下的一個代理iframe),并通過監聽自己的URL的變化來接收消息。這個方式的通信會造成一些不必要的瀏覽器歷史記錄,而且有些瀏覽器不支持onhashchange事件,需要輪詢來獲知URL的改變,最后,這樣做也存在缺點,諸如數據直接暴露在了url中,數據容量和類型都有限等。
高級瀏覽器Internet Explorer 8+, chrome,Firefox , Opera 和 Safari 都將支持這個功能。這個功能主要包括接受信息的"message"事件和發送消息的"postMessage"方法。比如damonare.cn域的A頁面通過iframe嵌入了一個google.com域的B頁面,可以通過以下方法實現A和B的通信
以上幾種都是雙向通信的,即兩個iframe,頁面與iframe或是頁面與頁面之間的,下面說幾種單項跨域的(一般用來獲取數據),因為通過script標簽引入的js是不受同源策略的限制的。所以我們可以通過script標簽引入一個js或者是一個其他后綴形式(如php,jsp等)的文件,此文件返回一個js函數的調用。
JSONP的優缺點
SONP的優點是:
它不像XMLHttpRequest對象實現的Ajax請求那樣受到同源策略的限制;它的兼容性更好,在更加古老的瀏覽器中都可以運行,不需要XMLHttpRequest或ActiveX的支持;并且在請求完畢后可以通過調用callback的方式回傳結果。
JSONP的缺點則是:
它只支持GET請求而不支持POST等其它類型的HTTP請求;它只支持跨域HTTP請求這種情況,不能解決不同域的兩個頁面之間如何進行JavaScript調用的問題。
CORS(Cross-Origin Resource Sharing)跨域資源共享,定義了必須在訪問跨域資源時,瀏覽器與服務器應該如何溝通。CORS背后的基本思想就是使用自定義的HTTP頭部讓瀏覽器與服務器進行溝通,從而決定請求或響應是應該成功還是失敗。目前,所有瀏覽器都支持該功能,IE瀏覽器不能低于IE10。整個CORS通信過程,都是瀏覽器自動完成,不需要用戶參與。對于開發者來說,CORS通信與同源的AJAX通信沒有差別,代碼完全一樣。瀏覽器一旦發現AJAX請求跨源,就會自動添加一些附加的頭信息,有時還會多出一次附加的請求,但用戶不會有感覺。
CORS與JSONP的對比
JSONP只能實現GET請求,而CORS支持所有類型的HTTP請求。
使用CORS,開發者可以使用普通的XMLHttpRequest發起請求和獲得數據,比起JSONP有更好的錯誤處理。
JSONP主要被老的瀏覽器支持,它們往往不支持CORS,而絕大多數現代瀏覽器都已經支持了CORS)。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90134.html
摘要:在支持這個方式的瀏覽器里,的寫法和不跨域的寫法一模一樣,只要服務器需要設置這種方式適用于主域相同,子域不同,比如和假如這兩個域名下各有和在這里操作里的元素數據注意需要設置成自身或更高一級的父域,且主域必須相同。 打個招聘廣告: 杭州 阿里巴巴B2B 招前端(想去西溪的也可幫推薦),比較缺人,機會多多!廣告位長期有效,有興趣簡歷我郵箱:854936875@qq.com 此文章學習借鑒了一...
摘要:什么是跨域要明白什么是跨域之前,首先要明白什么是同源策略同源策略就是用來限制從一個源加載的文檔或腳本與來自另一個源的資源進行交互。最后,解決跨域問題還有一個更通用更強大的方法,我單獨把它拿出來總結了一篇文章跨域問題的根本解決方案。 什么是跨域? 要明白什么是跨域之前,首先要明白什么是同源策略? 同源策略就是用來限制從一個源加載的文檔或腳本與來自另一個源的資源進行交互。那怎樣判斷是否是同...
摘要:例外當涉及到同源策略時,有兩個主要的例外授信范圍兩個相互之間高度互信的域名,如公司域名,不遵守同源策略的限制。端口未將端口號加入到同源策略的組成部分之中,因此和屬于同源并且不受任何限制。 原文鏈接:http://www.devsai.com/2016/11/24/talk-CORS/ 同源策略(same origin policy) 1995年,同源政策由 Netscape 公司引入瀏...
摘要:本文主要是關于跨域的幾種方式,關于什么是跨域這里就不多說了,寫這個也是為了記住一些知識點的。我自己用和的寫過一些,但是沒有在實際工作中用過,所以對這一塊了解不深。 本文主要是關于跨域的幾種方式,關于什么是跨域這里就不多說了,寫這個也是為了記住一些知識點的。 一. jsonp jsonp的跨域方式很容易理解,頁面的的每一個script標簽瀏覽器都會發送get請求獲取對應的文本資源,獲取到...
閱讀 2000·2021-11-15 18:09
閱讀 896·2021-09-06 15:13
閱讀 2640·2021-08-23 09:43
閱讀 2023·2019-08-30 15:54
閱讀 2215·2019-08-30 13:56
閱讀 2482·2019-08-26 11:31
閱讀 3075·2019-08-26 10:56
閱讀 692·2019-08-26 10:28