我正在使用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'];
}
}
我能解决这个问题下一个试试?
我想你明白是什么错误 - 在远程服务器正试图访问本地主机;这可能不会起作用。你是否在你的代码中硬编码localhost引用?或者它在配置文件中?没有代码审查,我认为我们不能提供更多帮助。 – JeffryHouser
没有没有在项目设置旁边的应用程序中使用的合并网址 - > Flex服务器,其中我的webroot设置为/ Applications/MAMP/htdocs和根URL为http:// localhost/ – dotNes
我不确定Flash Builder的Flex服务器设置是做什么的。不过,我不希望它改变你的代码。你正在编译一个服务配置到你的主文件中吗?许多AMF实现使用外部配置文件方法。我会在那里寻找一个硬编码的“本地主机”参考。您也可以查看您引用的任何外部库。 – JeffryHouser