CORS XMLRPC通过mimic.js

时间:2012-07-06 19:36:23

标签: cors xmlrpcclient simplexmlrpcserver

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

当网页和服务器在同一台机器上时,一切都很顺利。如果页面来自不同的机器,我会遇到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 个答案:

答案 0 :(得分:1)

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