2013-07-26 125 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