跨域請求存在的原因由于瀏覽器的同源策略,即屬于不同域的頁面之間不能相互訪問各自的頁面內(nèi)容。一imgesrc,src,stylehref不受同源策略的影響可以加載其他域的資源,可以用這個特性,向服務器發(fā)送數(shù)據(jù)。最常用的就是使用imagesrc向服務器發(fā)送前端的錯誤信息。服務器代理,同源策略只存在瀏覽器端,通過服務器轉(zhuǎn)發(fā)請求可以達到跨域請求的目的,劣勢增加服務器的負擔,且訪問速度慢。
說明跨域產(chǎn)生的原因是什么
跨域請求的存在是因為瀏覽器的同源策略,即屬于不同域的頁面無法訪問彼此的頁面內(nèi)容??缬蚍椒?。前端方法,。姓名,。,.src(不能返回任何數(shù)據(jù)),jsonP(。src后臺不配合,無數(shù)據(jù)可返回),style.href(無數(shù)據(jù)可返回)1。imge.src,。src,style.href可以加載其他域的資源而不受同源策略的影響,你可以利用這個特性發(fā)送到服務器。最常用的方法是使用image.src向服務器發(fā)送前端錯誤信息。Image.src和style.href無法獲取服務器返回的數(shù)據(jù),而。src服務器可以得到合作返回的數(shù)據(jù)。第二,。姓名,。是兩個直接相互傳輸數(shù)據(jù)的窗口。(1.它是HTML5中新增的,使用限制是必須獲得窗口的引用。E8+支持,opera支持(2).name .在一個頁面中打開另一個頁面時,。名稱是共享的,因此可以傳遞數(shù)據(jù)。姓名。的有限大小。名字叫2M,所有瀏覽器都支持,沒有任何限制。3.設(shè)置。兩頁是相同的。只能設(shè)置為父域名,其訪問和使用受到相同的限制。2.純后端CORS,服務器代理CORS是w3c標準方式,哪些域可以通過在web服務器上設(shè)置響應頭-ALOW-來訪問本域的數(shù)據(jù),ie8&9(),10+,. 5。代理,同源策略只存在于瀏覽器端,通過服務器轉(zhuǎn)發(fā)請求可以達到跨域請求的目的。缺點增加服務器負擔,訪問速度慢。3.前后端組合JsonP.src不受同源策略限制,可以動態(tài)創(chuàng)建標簽。用參數(shù)中的回調(diào)方法在src中寫請求數(shù)據(jù)的域,服務器返回帶參數(shù)的回調(diào)函數(shù)的字符串。
如何解決跨域問題
跨域問題還是問題嗎?這方面有很多解決辦法。今天我重溫一下老話,通過幾個應用場景總結(jié)一下我所知道的(轉(zhuǎn)載請注明出處)。第一,我的意思是某某域名在你的控制之下。你負責開發(fā)內(nèi)部場景。首先,將www.xxx.com的網(wǎng)頁嵌入www.xxx.com的網(wǎng)頁。如何使用js通信內(nèi)外(轉(zhuǎn)載請注明http://blog.csdn.net/出處)一級域名都在xxx.com。這個域名必須在你的控制之下,所以你可以通過同時升級兩個頁面的域名,在父窗口和內(nèi)部添加js語句。="xxx.com "經(jīng)過兩個頁面,您可以通過..并進行無障礙JS交流。這樣的說法在新浪、淘寶等很多頁面都可以找到。但是,不能隨便指定,只能向上升級。從bbs.xxx.com升級到y(tǒng)yy.com肯定會出錯。場景二:將www.xxx.com的頁面嵌入www.xxx.com的。兩個域名都在你的控制之下。如何在內(nèi)外溝通一些數(shù)據(jù)(http://blog.csdn.net/lenel轉(zhuǎn)帖請注明出處)可以通過改變彼此的哈希值來溝通一些數(shù)據(jù)。這里的實現(xiàn)基于以下技術(shù)點:1 .父窗口通過改變子窗口的src中的散列值來發(fā)送一些信息。如果只有src的散列部分被改變,子窗口將不會被重新加載。2.子窗口可以重寫。父窗口的href,但注意子窗口不能被讀取,只能重寫。我是href。因此,這是需要你控制的兩個域名,知道什么。當前父窗口的href為,并將其寫入子窗口,以便傳遞..href= "父窗口的已知href "+" # "+hash。這樣,父窗口就不會重載,除非哈希發(fā)生變化。3.以上兩步分別實現(xiàn)了兩個窗口之間的無刷新數(shù)據(jù)通知,那么下面就是如何感知數(shù)據(jù)變化。標準中沒有相關(guān)的規(guī)定,所以目前任何瀏覽器在遇到。hash,這意味著您必須編寫自己的監(jiān)控函數(shù)來監(jiān)控。哈希。方法是通過寫一個monitor函數(shù)或者每隔20-100ms檢查一次hash是否變化,如果變化了就驅(qū)動js根據(jù)新的數(shù)據(jù)做它想做的事情。這個實現(xiàn)的一些分析1。信息通道是雙向的,當然也會兼容單向。如果只有父窗口通知子窗口數(shù)據(jù),只需要子窗口寫哈希監(jiān)控,反之亦然。2.局限性也相當大,因為公關(guān)