2012-07-06 60 views
0

场景:我有一个网页,需要从Javascript进行XMLRPC调用,并使用mimic.js来做到这一点。 XMLRPC服务器是使用基于SimpleXMLRPCServer的python编写的。CORS XMLRPC通过mimic.js

当网页和服务器在同一台机器上时,一切正常。如果页面来自不同的机器,我遇到了CORS问题。我设法去的地步,我知道XMLRPC调用打通到服务器的点,但该页面还在抱怨:

XMLHttpRequest cannot load http://server.machine.com:8888/. Origin http://page.machine.com is not allowed by Access-Control-Allow-Origin. 
(mimic.js:8) NETWORK_ERR: XMLHttpRequest Exception 101: A network error occurred in synchronous requests. 

这是我不得不添加到我的SimpleXMLRPCRequestHandler的子类我的服务器:

 def do_OPTIONS(myself): 
      myself.send_response(200) 
      myself.send_header("Access-Control-Allow-Origin", "*") 
      myself.send_header("Access-Control-Allow-Headers","Content-Type") 
      myself.end_headers() 
      myself.wfile.write("OK") 

我的理解是,我不应该需要改变有关发出呼叫XMLRPC什么当服务器在不同的机器上(除指定新的地址)。所以(终于!)这个问题:我错过了什么?如果答案和“你需要一个不同的XMLRPC客户端库”一样简单,那么对于替换的建议就会受到欢迎。

回答

1

似乎ACA-Origin & ACA头标头也需要添加到来自POST请求(实际的XMLRPC方法调用)的响应中。