2008-10-24 3 views
0

Я пытаюсь получить данные с моего сервера, используя RemoteObject для его выполнения. Когда я запускаю приложение на своем локальном хосте, он отлично работает, но когда я использую его на своем сервере, я получаю Channel.Security.Error (URL-адрес доступа к ошибкам безопасности).RemoteObject - проблема с перекрестными доменами

В журналах на стороне сервера есть упоминание о перекрестном домене. 77.127.194.4 - - [23/Oct/2008 21:15:11] "GET /crossdomain.xml HTTP/1.1" 501

У кого-то столкнулись с той же проблемой? Есть идеи ?

ответ

1

Вы пытались добавить в свой crossdomain.xml (где ваши выборки вещи из) это:

<?xml version="1.0"?> 
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.YOUR_FRAME_WORK_CROSSDOMAIN_POLICY.com/xml/dtds/cross-domain-policy.dtd"> 
    <cross-domain-policy> 
     <site-control permitted-cross-domain-policies="all"/> 
     <allow-access-from domain="*.YOUR_SITE_GOES_HERE.com" secure="false" /> 
     <allow-access-from domain="*.YOUR_SITE_GOES_HERE.com" secure="false" /> 
    </cross-domain-policy> 

Материал в CapsLock вы, вероятно, придется изменить, чтобы соответствовать вашей рамки. Например, я скопировал это с той, которую я использую с macromedia flash. Вместо «www.YOUR_FRAME_WORK_CROSSDOMAIN_POLICY.com/...» у меня нормальные «www.macromedia.com/xml/dtds/...

Я не уверен, но попытаюсь выяснить, что это, вероятно, ваша проблема. Для кросс-домена вам необходимо добавить на серверную сторону, где ваши файлы, из которых вы хотите получить доступ, для получения других сайтов.

1

Я нашел решение. Вы имеете право на файл crossdomain.xml, но, к сожалению, , библиотека Python SimpleXMLRPCServer по умолчанию не поддерживает метод GET, поэтому мы должны это реализовать.

from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler 

class ExtendedXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): 
    def do_GET(self): 
    #only allow a request for the crossdomain file 
    if self.path != '/crossdomain.xml': 
     self.send_response(403) 
     self.log_request(403) 
     return 

    #open the crossdomain file and read its contents 
    response = open('crossdomain.xml', 'r').read() 

    #write the data to the socket along with valid HTTP headers 
    self.send_response(200) 
    self.send_header("Content-type", "text/xml") 
    self.send_header("Content-length", str(len(response))) 
    self.end_headers() 
    self.wfile.write(response) 
    self.log_request(200) 
Смежные вопросы