2013-07-26 137 views
0

我正在使用ZendAMF協議開發一個帶有Flex和PHP的Web應用程序。從昨天開始,每當我將應用程序發佈到遠程服務器時,都會出現這個奇怪的問題。 本地一切工作正常,只有當我發佈它在服務器上。這裏是我的ErrorMessage得到:Flex版本構建安全沙箱違例錯誤#2048

Send failed 
Channel.Security.Error error Error #2048: Security sandbox violation: http://mydomain.com/login/MainFrame.swf cannot load data from http://localhost/bin-debug/gateway.php. url: 'http://localhost/bin-debug/gateway.php' 

我敢肯定沒有錯我gateway.php和amf_config文件,因爲我知道他們是略有不同。 (我正在使用這些文件從一個備份的地方工作)

進一步,我複製我的crossdomain.xml也在Web根目錄和它自動進入的應用程序目錄。這是內容:

<cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy> 

問題是,在生產發佈它仍然試圖訪問本地文件。我已經嘗試了很多關於這個問題的搜索,但沒有發現與我的情況相同。

gateway.php源部分

<?php 
ini_set("display_errors", 1); 
$dir = dirname(__FILE__); 
$webroot = $_SERVER['DOCUMENT_ROOT']; 
$configfile = "$dir/amf_config.ini"; 

//default zend install directory 
$zenddir = $webroot. '/ZendFramework/library'; 

//Load ini file and locate zend directory 
if(file_exists($configfile)) { 
    $arr=parse_ini_file($configfile,true); 
    if(isset($arr['zend']['webroot'])){ 
     $webroot = $arr['zend']['webroot']; 
     $zenddir = $webroot. '/ZendFramework/library'; 
    } 
    if(isset($arr['zend']['zend_path'])){ 
     $zenddir = $arr['zend']['zend_path']; 
    } 
} 

我能解決這個問題下一個試試?

+0

我想你明白是什麼錯誤 - 在遠程服務器正試圖訪問本地主機;這可能不會起作用。你是否在你的代碼中硬編碼localhost引用?或者它在配置文件中?沒有代碼審查,我認爲我們不能提供更多幫助。 – JeffryHouser

+0

沒有沒有在項目設置旁邊的應用程序中使用的合併網址 - > Flex服務器,其中我的webroot設置爲/ Applications/MAMP/htdocs和根URL爲http:// localhost/ – dotNes

+0

我不確定Flash Builder的Flex服務器設置是做什麼的。不過,我不希望它改變你的代碼。你正在編譯一個服務配置到你的主文件中嗎?許多AMF實現使用外部配置文件方法。我會在那裏尋找一個硬編碼的「本地主機」參考。您也可以查看您引用的任何外部庫。 – JeffryHouser

回答

-1

http://mydomain.com/需要在這種情況下,從http://localhost/

信息,請http://localhost/crossdomain.xmlhttp://mydomain.com/

應該允許請求的只是確保你的crossdomain.xml是確定

+0

正如我所說,我沒有任何問題,當從'http:// localhost'本地運行應用程序。部署完成後,它仍然指向localhost,它只需指向web服務器('http:// mydomain') – dotNes

+0

只需看看你發佈的錯誤消息,問題在那裏描述,你有2個域,現在你是告訴你沒有麻煩,但你的域名(根據錯誤)試圖從本地主機獲取信息 - 這似乎是錯誤的 –

+0

我必須-1這個。 「localhost」是一個指向本地服務器的特殊域。除非應用程序的每個客戶端都有自己的服務器運行;在生產應用程序中使用localhost是不現實的。此外,你只是重複了@dotNes和我在評論中一直進行的同樣的對話。 – JeffryHouser