2013-08-30 29 views
3

我有一些,比如說,怪異的情況......這是它是什麼:閃光燈:crossdomain.xml的被忽略

Flash應用程序記錄了一臺服務器,並上傳另一臺服務器上的音頻。 因此,正如您可能猜到的那樣,我面臨安全沙箱違例異常/錯誤,並且似乎必須將crossdomain.xml添加到服務器的根目錄。好的,做到了,但它似乎沒有得到下載或下載過程中斷,所以我不斷收到此錯誤。

請問有人能指出我的錯誤嗎?我真的不明白我做錯了什麼。

這是我得到的,而試圖上傳音頻錯誤:

Error #2044: Unhandled securityError:. text=Error #2170: Security sandbox 
violation: https://ip1/bar/foo cannot send HTTP headers to https://ip2/foo/bar 

這裏是我的crossdomain.xml的內容(測試版):

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all"/> 
    <allow-access-from domain="*" to-ports="*" /> 
    <allow-http-request-headers-from domain="*" headers="*" /> 
</cross-domain-policy> 

附:並且,是的,crossdomain.xml可通過https://ip2/crossdomain.xml地址訪問。

附加信息

我啓用閃存日誌,驚訝地知道,閃光燈無法得到crossdomain.xml的,雖然它是通過瀏覽器accessable(與它爲https的條款,並指出,有是一個證書問題,或者像那樣)。

Warning: Failed to load policy file from https://192.168.22.103/crossdomain.xml 

附加信息PART 2

下面是我在瀏覽器中我嘗試手動訪問的crossdomain.xml警告的情況下: enter image description here

這裏是下載跨域請求。 xml以http status code = 0結尾:
enter image description here

+0

您是否嘗試過手動加載crossdomain.xml文件?我認爲這個方法是loadPolicyFile()http://stackoverflow.com/questions/527911/flex-load-policy-file-crossdomain-xml。 – JeffryHouser

+0

@ Reboog711,實際上,沒有。將嘗試玩這個併發布結果。 –

+0

@ Reboog711,剛剛放棄,它不符合我的需求。我不知道服務器的IP地址,上傳的地址。所以我不能指定url來顯式地獲取crossdomain.xml。 –

回答

1

最後,我發現問題是什麼。當我爲Internet Explorer開發此應用程序時,有一些棘手的事情可以使其工作。正如你在這張圖中看到的那樣:this有「本網站提供的安全證書是針對不同網站的地址發佈的」警告。問題是Internet Explorer總是默認警告用戶,這是防止Flash Player下載Flash策略文件(crossdomain.xml)的問題。要覆蓋此行爲,你只需要:

  1. 轉到Internet Explorer設置:點擊齒輪圖標 - > Internet選項
  2. 轉到高級選項卡
  3. 向下滾動到設置列表並取消結束「警告證書地址不匹配」。
  4. 重要提示:殺死IE的所有實例(如果有的話,檢入任務管理器)。
  5. 執行這些步驟後,閃存不應該在獲取crossdomain.xml時出現問題。

真的希望這可以幫助其他flex開發人員避免此類問題。乾杯!

0

您是否試過的Security.allowDomain()?

+0

我有'Security.allowDomain(「*」);'在我的代碼中,但AFAIK這個代碼沒有什麼共同的問題,我有。 –

+0

是的,allowDomain允許在客戶端,crossdomain允許在服務器端 – csomakk

0

我有類似的問題。這有點不同,因爲我有套接字,但我發現Flash播放器使用策略文件的方式有所改變。您可能會發現這是很有幫助的http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html 至少它幫助我,我寫了這article,這就好比我的情況下結束。

看看這一段:

Adob​​e已經與IANA申請,互聯網編號分配機構,以 備用端口843的服務插座政策文件的目的。通過 引入socket策略文件集中的位置時,Flash播放器 使系統管理員可以定義哪些端口是 可通過覆蓋主機上的其他任何政策 文件一個主策略。如果Flash Player 9,0,124,0無法檢索端口843主 策略文件,那麼它要求對 它正試圖連接的端口套接字策略文件。但是,如果策略文件是TCP端口843上的服務可用的 ,則Flash Player將 認爲是該系統的權威權限集。

在我的項目中,我只是在特定的端口提供crossdomain.xml文件。

+0

我實際上有我的web應用程序中的Flash網絡套接字約束,使套接字在IE中工作,這些網絡套接字通過xmlsocket://獲取crossdomain。但在主題問題中,由於通過https://訪問資源,因此必須通過https://獲取crossdomain.xml **。如果感興趣,請參閱已接受答案中的主題問題解決方案。 –

0

我有一個類似的問題;本地主機上的.swf通過https連接遠程服務器上的REST API,該遠程服務器有一個跨域文件,但它拋出2170.對我來說,解決方案是在https上提供包含.swf的localhost .html文件 - 使問題消失。