/***************************策略檔案 crossdomain.xml***************************/
一、基礎解說
用flash文件訪問另乙個域中的資料。flash player會自動試圖從該域載入策略檔案。
如果試圖訪問資料的flash文件所在的域包括在該策略檔案中,則資料將自動成為可訪問資料。
策略檔案必須命名為 crossdomain.xml,並且可以駐留在伺服器的根目錄和其它目錄之中,這個伺服器提供要被訪問的actionscript資料。
每個策略檔案對於它所駐留的伺服器的埠和協議是特定的,只有在通過http、https或ftp進行通訊的伺服器上,策略檔案才起作用。
flashplayer公升級到9.124之後,加強了安全性,之前的crossdomain.xml的寫法發生了變化,以下就是該檔案的完整寫法:
<?xml version="1.0"?>
<?xml version="1.0"?>
表示該服務允許任何外域來訪問。
關於crossdomain.xml的放置目錄問題,有如下解決方案,可放置在:
1/ 如果這個目錄是容器的根目錄,可以通過以下的url訪問crossdomain.xml:
二、詳細講解:
crossdomain.xml的根節點必須是cross-domain-policy:
* 它包含三個子節點:site-control, allow-access-from, allow-http-request-headers-from
* 無屬性
節點介紹:
* site-control
* 這個節點定義當前域的meta-policy
* meta- policy決定這個域中除了master policy file以外哪些策略檔案可以被client接受
* 如果這個策略檔案並不是 master policy file,site-control這個節點就會被忽略。
* 如果你用actionscript指定使用某個非master policy file的策略檔案,你必須先檢查master policy file的這個子節點以確認你指定的那個policy file是被授權的。
* site-control的屬性permitted-cross-domian-policies有5個選項:
none--任何policy file都不被允許,包括master policy file。
master-only不用解釋了。
by-content-type--當http頭的content-type值為text/x- cross-domain-policy才被允許。
by-ftp-filename--只有以檔名結尾的url才被允許。
all--不用介紹。
預設值是master-only,除了socket policy file,它的預設值是all。
總:
1、 策略檔案寫法:
<?xml version="1.0"?>
2、 通配策略檔案(無限制訪問):
<?xml version="1.0"?>
<?xml version="1.0"?>
解決跨域問題
什麼是跨域訪問 舉個栗子 在a 中,我們希望使用ajax來獲得b 中的特定內容。如果a 與b 不在同乙個域中,那麼就出現了跨域訪問問題。你可以理解為兩個網域名稱之間不能跨過網域名稱來傳送請求或者請求資料,否則就是不安全的。總而言之,同源策略規定,瀏覽器的ajax只能訪問跟它的html頁面同源 相同網...
解決跨域問題
雖然原理比較複雜,但是前面說過 事實上,springmvc已經幫我們寫好了cors的跨域過濾器 corsfilter 內部已經實現了剛才所講的判定邏輯,我們直接用就好了。在learn gateway中編寫乙個配置類,並且註冊corsfilter import org.springframework....
解決跨域問題
注意 1.如果是協議和埠造成的跨域問題,前端無法處理 2.是否跨域,僅僅通過url的首部來判斷,不會通過網域名稱對應的ip位址是否相同來判斷 3.跨域並不是請求發不出去,而是請求發出去了,也正常返回結果了,但是結果被瀏覽器攔截了。利用script標籤沒有跨域的限制,網頁可以從其他 動態的獲取json...