0

我正在尝试从我的服务器获取数据,使用 RemoteObject 来完成它。当我在我的本地主机上运行应用程序时,它运行良好,但是当我在我的服务器上使用它时,我得到一个 Channel.Security.Error(访问 URL 的安全错误)。

在服务器端日志中提到了 cross domain 。77.127.194.4 - - [23/Oct/2008 21:15:11]“GET /crossdomain.xml HTTP/1.1”501

有人遇到过同样的问题吗?任何想法 ?

4

2 回答 2

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)
于 2008-10-25T14:01:09.000 回答
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>

大写的东西你可能不得不改变以适应你的框架。例如,我从与macromedia flash 一起使用的那个中复制了它。而不是“www.YOUR_FRAME_WORK_CROSSDOMAIN_POLICY.com/...”我通常有“www.macromedia.com/xml/dtds/...

我不确定,但请尝试对此进行调查,这可能是您的问题。对于跨域,您通常需要添加到服务器端,您的文件来自哪里,其他站点获取它的权限。

于 2008-10-24T12:05:01.887 回答