2008-10-24 110 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> 

的东西,在大写锁,你可能必须改变,以适应你的框架。例如,我从Macromedia Flash中使用的那个复制。而不是“www.YOUR_FRAME_WORK_CROSSDOMAIN_POLICY.com/...”我通常有“www.macromedia.com/xml/dtds/...

我不知道,但试图调查,这可能是你的问题。对于跨域,您通常需要添加到服务器端,其中您的fecthing的东西,从其他网站的权限获得它。

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)