as跨域問題解決總結

2021-09-01 10:00:22 字數 3028 閱讀 5384

總結一下在工作中遇到的跨域問題!

一、報安全沙箱問題,沒有可用的安全策略檔案

關於策略檔案,我改的是目標伺服器(也就是伺服器)上的策略檔案,在策略檔案裡把flash所在域的網域名稱加上就可以了!

東西還是挺簡單的,就是網上說法太多了,表達的也不太清楚,在這裡明確一下!

策略檔案語法:

下面的示例顯示了乙個策略檔案,該檔案允許訪問源自 *.example.com、www.zol.com 和 192.0.34.166 的 swf 檔案。

< ?xml version="1.0"? >

< cross-domain-policy >

< allow-access-from domain="*.de< allow-access-from domain="www.zol.com" / >

< allow-access-from domain="192.0.34.166" / >

< /cross-domain-policy >

當某個 swf 檔案試圖訪問另乙個域中的資料時,flash player 會嘗試自動從該域載入策略檔案。如果試圖訪問資料的 swf 檔案所在的域包括在該策略檔案中,則資料將自動成為可訪問資料。

預設情況下,策略檔案必須命名為 crossdomain.xml,並且必須位於伺服器的根目錄中。但是,swf 檔案可以通過呼叫 security.loadpolicyfile() 方法檢查是否為其它名稱或位於其它目錄中。跨域策略檔案僅適用於從其中載入該檔案的目錄及其子目錄。因此,根目錄中的策略檔案適用於整個伺服器,但是從任意子目錄載入的策略檔案僅適用於該目錄及其子目錄。

策略檔案僅影響對其所在特定伺服器的訪問。例如,位於 的策略檔案只適用於在埠 8080 通過 https 對 www.zol.com 進行的資料載入呼叫。

跨域策略檔案包含單個< cross-domain-policy >標籤,該標籤又包含零個或多個< allow-access-from >標籤。每個< allow-access-from >標籤包含乙個屬性 domain,該屬性指定乙個確切的 ip 位址、乙個確切的域或乙個萬用字元域(任何域)。萬用字元域由單個星號 (*)(匹配所有域和所有 ip 位址)或後接字尾的星號(只匹配那些以指定字尾結尾的域)表示。字尾必須以點開頭。但是,帶有字尾的萬用字元域可以匹配那些只包含字尾但不包含前導點的域。例如,foo.com 會被看作是 *.foo.com 的一部分。ip 域規範中不允許使用萬用字元。

如果您指定了乙個 ip 位址,則只向使用 ip 語法從該 ip 位址載入的 swf 檔案(例如 授予訪問許可權,而不向使用網域名稱語法載入的 swf 檔案授予訪問許可權。flash player 不執行 dns 解析。

您可以允許訪問來自任何域的文件,如下面的示例所示:

< ?xml version="1.0"? >< !-- -- >< cross-domain-policy >  < allow-access-from domain="*" / >< /cross-domain-policy >

每個< allow-access-from > 標籤還具有可選的 secure 屬性,其預設值為 true。如果您的策略檔案在 https 伺服器上,並且要允許非 https 伺服器上的 swf 檔案從 https 伺服器載入資料,則可以將此屬性設定為 false。

將 secure 屬性設定為 false 可能會危及 https 提供的安全性。特別是將此屬性設定為 false 時,會使安全內容受到電子欺騙和截聽攻擊。adobe 強烈建議不要將 secure 屬性設定為 false。

如果要載入的資料位於 https 伺服器上,但是載入資料的 swf 檔案位於 http 伺服器上,則 adobe 建議將要執行載入的 swf 檔案移動到 https 伺服器上,以便可以使安全資料的所有副本都能得到 https 的保護。但是,如果決定必須將要執行載入的 swf 檔案儲存在 http 伺服器上,則需將 secure="false" 屬性新增到< allow-access-from > 標籤,如以下**所示:

< allow-access-from domain="www.example.com" secure="false" / >

不包含任何< allow-access-from >標籤的策略檔案相當於伺服器上沒有策略。

二、遠端載入,無法顯示,已經設定跨域檔案

一開始的思路:當使用 loader 類的 load() 方法載入影象時,可以指定乙個 context 引數,該引數是乙個 loadercontext物件。如果將 loadercontext 物件的 checkpolicyfile 屬性設定為 true,則 flash player將在從其中載入該影象的伺服器上檢查是否存在跨域策略檔案。如果存在跨域策略檔案且該檔案允許執行載入的 swf檔案所在的域進行訪問,則會允許該檔案訪問 bitmap 物件中的資料,否則就不允許。

最後解決方法如下:

//需要在原來的呼叫基礎增加loadercontext類;最後看一下:

checkpolicyfile 屬性 

public var checkpolicyfile:boolean = false 語言版本 :  actionscript 3.0 

player 版本 :  flash player 9 

如果您將 checkpolicyfile 設定為 true,並且未找到相關的策略檔案,則除非您嘗試執行的操作引發了 securityerror 異常,否則您將不會收到任何錯誤指示。 但是,一旦 loaderinfo 物件排程 progressevent.progress 或 event.complete 事件,您就可以通過檢查 loaderinfo.childallowsparent 屬性的值來測試是否找到了相關的策略檔案。

跨域問題解決

原文 當前端頁面與後台執行在不同的伺服器時,就必定會出現跨域這一問題,本篇簡單介紹解決跨域的三種方案,部分 截圖如下,僅供參考 方式一 使用ajax的jsonp 前端 伺服器 使用該方式的缺點 請求方式只能是get請求 方式二 使用jquery的jsonp外掛程式 前端 伺服器 使用該方式的特點 與...

跨域問題解決

筆記於學習尚矽谷課程所作 同源策略 是指協議,網域名稱,埠都要相同,其中有乙個不同都會產生跨域 解決1 使用nginx部署為同一域 解決2 配置當次請求允許跨域 新增響應頭 解決2如下 將配置放在閘道器 configuration public class gulimallcorsconfiggur...

跨域問題解決

1 定義 協議 ip 埠號都一樣的url稱為同源,來自同一伺服器 2 同源策略 瀏覽器為了安全起見,有乙個約束,要求瀏覽器執行的指令碼只能同源訪問。預設如果訪問的不是同源,則攔截這個訪問 3 目的 是為了保證 戶資訊的安全,防 惡意的 站竊取資料 4 解決方案1 jsonp 在html頁面中通過相應...