ie8跨域訪問
A. 如何程序中設置IE8的通過域訪問數據源
不同域
可以用 img script iframe src 來跨越請求
IE8改為jsonp數據,ie下跨域請求用XDomainRequest對象,不是acx或者XMLHttpRequest對象
可以看這個代碼
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
B. 說明跨域產生的原因是什麼
跨域請求存在的原因:由於瀏覽器的同源策略,即屬於不同域的頁面之間不能相互訪問各自的頁面內容。
跨域的方式
1.前端的方式: possMessage,window.name,document.domain,image.src(得不到數據返回),jsonP(script.src後台不配合得不到數據返回),style.href(得不到數據返回)
一.imge.src,script.src,style.href 不受同源策略的影響可以載入其他域的資源,可以用這個特性,向伺服器發送數據。最常用的就是使用image.src 向伺服器發送前端的錯誤信息。image.src 和style.href 是無法獲取伺服器的數據返回的,script.src 伺服器端配合可以得到數據返回。
二possMessage,window.name,document.domain 是兩個窗口直接相互傳遞數據。
(1)possMessage 是HTML5中新增的,使用限制是 必須獲得窗口的window 引用。IE8+支持,firefox,chrome,safair,opera支持
(2)window.name ,在一個頁面中打開另一個頁面時,window.name 是共享的,所以可以通過window.name 來傳遞數據,window.name的限制大小是2M,這個所有瀏覽器都支持,且沒有什麼限制。
3) document.domain 將兩個頁面的document.domain 設置成相同,document.domain 只能設置成父級域名,既可以訪問,使用限制:這頂級域名必須相同
2.純後端方式: CORS,伺服器代理
CORS 是w3c標準的方式,通過在web伺服器端設置:響應頭Access-Cntrol-Alow-Origin 來指定哪些域可以訪問本域的數據,ie8&9(XDomainRequest),10+,chrom4 ,firefox3.5,safair4,opera12支持這種方式。
伺服器代理,同源策略只存在瀏覽器端,通過伺服器轉發請求可以達到跨域請求的目的,劣勢:增加伺服器的負擔,且訪問速度慢。
3.前後端結合:JsonP
script.src 不受同源策略的限制,所以可以動態的創建script標簽,將要請求數據的域寫在src 中參數中附帶回調的方法,伺服器端返回回調函數的字元串,並帶參數。
C. XDomainRequest,IE8+跨域請求對象
XDomainRequest對象為一個允許腳本連接任何伺服器並且交互數據的安全,可信,輕量級數據服務。開發使用 XDomainRequest 對象發送有跨域安全當前ajax請求。安全警告: 跨域請求(XDRs)匿名保護用戶數據,就是說伺服器不能確定誰在請求數據。為了保護用戶隱私,跨域返回的數據不能為敏感或者個人身份識別之類的信息。為了防止泄露數據給惡意的站點,不鼓勵啟用XDRs請求。
D. 如何解決IE瀏覽器跨域問題
工具:
IE瀏覽器
方法如下:
1、打開IE瀏覽器,在工具菜單下選擇Internet選項,打開Internet選項卡
2、切換到安全選項卡下,點擊可信站點,然後單擊站點按鈕
3、可信站點窗口輸入網址到可信站點的區域,點擊添加按鈕,網址則會添加到網站列表下,最後關閉可信站點窗口
4、還是在安全選項卡下的可信站點,點擊自定義級別
5、打開站點區域窗口,找到跨域瀏覽窗口和框架選擇啟用
6、在當前窗口中繼續往下翻,通過域訪問數據源也選擇啟用,點擊確定關閉受信任的站點區域窗口
7、在Internet窗口也點擊確定按鈕,同時關閉瀏覽器
8、在請求的js腳本中添加是否允許跨域訪問的許可權,jQuery.support.cors默認值為true,則代表允許;反之,不允許。設置完成,重新打開瀏覽器驗證即可。
E. 如何解決ie8 下的跨域post請求
方法/步驟
1
打開IE瀏覽器,在工具菜單下選擇Internet選項,打開Internet選項卡
2
切換到安全選項卡下,點擊可信站點,然後單擊站點按鈕
3
可信站點窗口輸入網址到可信站點的區域,點擊添加按鈕,網址則會添加到網站列表下,最後關閉可信站點窗口
4
還是在安全選項卡下的可信站點,點擊自定義級別
5
打開受信任的站點區域窗口,找到跨域瀏覽窗口和框架選擇啟用
6
在當前窗口中繼續往下翻,通過域訪問數據源也選擇啟用,點擊確定關閉受信任的站點區域窗口
7
在Internet窗口也點擊確定按鈕,同時關閉瀏覽器
8
在請求的js腳本中添加是否允許跨域訪問的許可權,jQuery.support.cors默認值為true,則代表允許;反之,不允許。設置完成,重新打開瀏覽器驗證即可
F. ie瀏覽器的跨域問題
那個。。。把IE換了吧,不穩定。。。我可是被深深地傷害過。。。(沒財富了,求打賞。。。)
G. IE8.0下iframe跨域的實現
IE7可以用P3P頭解決,IE8目前還沒有好的辦法,P3P頭也不認了。如果你frame頁和主頁在同一個域名下,可以設置X-FRAME-OPTIONS頭為SAMEORIGIN。
關於設置http頭,查下你的編程語言書,都有。header("xxx")或者header.set啥的
H. 跨域有哪幾種方式
跨源資源共享
通過 XHR 實現 Ajax 通信的一個主要限制,來源於跨域安全策略。默認情況下,XHR 對象只能訪 問與包含它的頁面位於同一個域中的資源。這種安全策略可以預防某些惡意行為。但是,實現合理的跨 域請求對開發某些瀏覽器應用程序也是至關重要的。
CORS(Cross-Origin Resource Sharing,跨源資源共享)是 W3C 的一個工作草案,定義了在必須訪 問跨源資源時,瀏覽器與伺服器應該如何溝通。CORS 背後的基本思想,就是使用自定義的 HTTP 頭部 讓瀏覽器與伺服器進行溝通,從而決定請求或響應是應該成功,還是應該失敗。
比如一個簡單的使用 GET 或 POST 發送的請求,它沒有自定義的頭部,而主體內容是 text/plain。在 發送該請求時,需要給它附加一個額外的 Origin 頭部,其中包含請求頁面的源信息(協議、域名和端 口),以便伺服器根據這個頭部信息來決定是否給予響應。下面是 Origin 頭部的一個示例:

這個例子通過查詢地理定位服務來顯示你的 IP 地址和位置信息。
JSONP 之所以在開發人員中極為流行,主要原因是它非常簡單易用。與圖像 Ping 相比,它的優點 在於能夠直接訪問響應文本,支持在瀏覽器與伺服器之間雙向通信。不過,JSONP 也有兩點不足。
首先,JSONP 是從其他域中載入代碼執行。如果其他域不安全,很可能會在響應中夾帶一些惡意代碼,而此時除了完全放棄 JSONP 調用之外,沒有辦法追究。因此在使用不是你自己運維的 Web 服務時, 一定得保證它安全可靠。
其次,要確定 JSONP 請求是否失敗並不容易。雖然 HTML5 給<script>元素新增了一個 onerror 事件處理程序,但目前還沒有得到任何瀏覽器支持。為此,開發人員不得不使用計時器檢測指定時間內是否接收到了響應。但就算這樣也不能盡如人意,畢竟不是每個用戶上網的速度和帶寬都一樣。
參考:javascript高級程序設計第21章