RemoteObject - междоменная проблема - PullRequest
0 голосов
/ 24 октября 2008

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

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

Кто-нибудь сталкивался с такой же проблемой? есть идеи?

Ответы [ 2 ]

1 голос
/ 25 октября 2008

Я нашел решение. Вы правы в отношении файла 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)
1 голос
/ 24 октября 2008

Вы пытались добавить в свой файл 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/...

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

...