2013-07-26 3 views
0

Я разрабатываю веб-приложение с помощью Flex и PHP, используя протокол ZendAMF. Со вчерашнего дня у меня возникла эта странная проблема, возникающая при публикации приложения на удаленном сервере. Локально все работает отлично, только когда я публикую его на сервере. Вот это ErrorMessage я получаю:Ошибка с выпуском Flex Security Ошибка безопасности песочницы # 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 также в корневой каталог веб-сайта и в каталог приложения, где он автоматически попал. Это содержание:

<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; который, вероятно, не будет работать. Вы жестко кодируете ссылку localhost где-нибудь в своем коде? Или это в файле конфигурации? Я не думаю, что мы можем помочь больше без проверки кода. – JeffryHouser

+0

Нет, там, где в настройках проекта используется привязанный url, который используется в приложении -> Сервер Flex, на котором установлен мой веб-узел,/Applications/MAMP/htdocs и Корневой URL-адрес для http: // localhost/ – dotNes

+0

Я не уверен что делают настройки Flex Server из Flash Builder. Я бы не ожидал, что он изменит ваш код. Вы компилируете config-services в свой основной файл? Во многих реализациях AMF используется внешний файл конфигурации. Я бы посмотрел там на жестко закодированную ссылку «localhost». Вы также можете посмотреть любые внешние библиотеки, на которые вы ссылаетесь. – JeffryHouser

ответ

-1

http://mydomain.com/ требует информации от http://localhost/

в этом случае ваши http://localhost/crossdomain.xml должны позволить запросы http://mydomain.com/

просто убедитесь, что ваш crossdomain.xml нормально

+0

Как я уже сказал, у меня нет проблем с тем, что когда-либо было при запуске приложения локально с http: // localhost.После развертывания он все еще указывает на localhost, где он должен указывать только на веб-сервер ('http: // mydomain') – dotNes

+0

просто посмотрите сообщение об ошибке, которое вы опубликовали, проблема там описана, у вас есть 2 домена, теперь вы говоря, что у вас нет проблем, но ваш домен (по ошибке) пытается получить информацию от localhost - это кажется неправильным –

+0

У меня есть -1 это. «localhost» - это специальный домен, который указывает на локальный сервер. Если каждый клиент приложения не имеет собственного сервера; использование localhost в производственном приложении нецелесообразно. Кроме того, вы просто переписываете тот же разговор, что и @dotNes, и у меня были комментарии. – JeffryHouser