日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Ajax的跨域問題

系統(tǒng) 2254 0

在項目中遇到一個問題,與Ajax的跨域相關(guān),具體問題描述如下:
在客戶端的JS,使用ajax和服務(wù)器進行交互,出現(xiàn)的是
Access to restricted URI denied" code: "1012
[Break on this error] ajaxreq.open("GET",filename);
問題,如果此html以及JS文件放到服務(wù)器端,則不會出現(xiàn)問題,就是ajax跨域問題。但是此項目的需求不能將此html及Js文件放到服務(wù)器端,只能放到本地,從網(wǎng)上查看了很多資料,感覺在本地搭建一個服務(wù)器比較靠譜,將html放到本地服務(wù)器(這樣可以進行一些本地操作,比如讀本地的文件),這樣架構(gòu)就變成這樣了:

?

?

對于Ajax跨域的問題,通過網(wǎng)上的資料學(xué)習(xí),現(xiàn)總結(jié)如下:

1.什么引起了ajax跨域問題

ajax本身是通過xmlHttpRequest對象來進行數(shù)據(jù)的交互,而瀏覽器處于安全的考慮,不允許JS代碼進行跨域操作,所以會警告。

2.解決方案需要根據(jù)具體情況具體解決

一 、本域和子域的相互互訪: www.aa.com 和book.aa.com

二、本域和其他域的訪問: www.aa.com www.bb.com 用ifram

三、本域和其他域的相互訪問: www.aaa.com www.bb.com 用XMLHttpRequest訪問代理

四、本域和其他域的訪問: www.aa.com www.bb.com ,用JS創(chuàng)建動態(tài)腳本。

?

解決方法:

一,對于 www.aa.com 和book.aa.com,可以將book.aa.com用iframe添加到 www.aa.com 的某個頁面下,在 www.aa.com 和ifram里面都加上document.domain = "aa.com",這樣就可以統(tǒng)一域了,直接調(diào)用JS即可。

二、可以使用window.location對象的hash屬性。這個感覺有點亂。hash屬性就是 http://domain/web/a.htm#dsha 里面#后面的部分。利用JS改變hash網(wǎng)頁不會刷新,可以這樣通過JS訪問hash值來做到通信。大體的過程是頁面a和頁面b在不同域下,b通過iframe添加到a里,a通過JS修改iframe的hash值,b里面做一個監(jiān)聽(應(yīng)為JS只能修改hash,數(shù)據(jù)是否改變只能由b自己來判斷),檢測到b的hash值被修改了,得到修改的值,經(jīng)過處理返回a需要的值,再來修改a的hash值,同樣a里面也要做監(jiān)聽,如果hash變化的話就取得返回

三、 www.aa.com www.bb.com ,假如說你要取得數(shù)據(jù)就訪問某某鏈接參數(shù)是什么樣子的等等,最后返回的數(shù)據(jù)是什么格式的,而你需要做的就是在你的域下( www.aa.com )新建一個網(wǎng)頁,讓服務(wù)器去別人的網(wǎng)站上獲取數(shù)據(jù),再返回給你。比如domain1的a向同域下的RouteServlet請求數(shù)據(jù),RouteServlet向domain2下的getRouteServlet發(fā)送請求,Domain2將數(shù)據(jù)返回給RouteServlet,RouteServlet再返回給a,這樣就完成了一次數(shù)據(jù)請求,RouteSrevlet在當(dāng)中充當(dāng)了代理的作用。

四、這個是用<script>標簽來請求的,原理就是JS文件注入,在本域內(nèi)的a內(nèi)生成一個JS標簽,他的src指向請求的另外一個域的某個頁面b,b返回數(shù)據(jù)即可。

簡單來說,

第一種情況:域和子域的問題,可以完全解決交互。

第二種情況:跨域,實現(xiàn)過程比較復(fù)雜,需要兩個域的開發(fā)者都能控制,適用于簡單交互。

第三種情況:跨域,開發(fā)者只控制一個域即可,實現(xiàn)過程需要增加代理取得數(shù)據(jù),是常用的方式。

第四種情況:跨域,兩個域開發(fā)者都需要控制,返回一段JS代碼。

?

?

?

?

?

?

?

?

?

?

?

?

Ajax的跨域問題


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 新密市| 常熟市| 张掖市| 依兰县| 瓮安县| 宁海县| 金堂县| 镇江市| 富平县| 嘉善县| 文山县| 石阡县| 宿州市| 江孜县| 朝阳市| 荃湾区| 长垣县| 通辽市| 阿坝县| 康保县| 抚顺县| 乌兰县| 荣成市| 尉犁县| 大丰市| 嵊泗县| 新泰市| 黔江区| 高雄市| 财经| 河西区| 徐水县| 土默特右旗| 福清市| 江源县| 宣汉县| 博罗县| 惠州市| 潞城市| 元江| 庆城县|