场景:我有一个网页需要从 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 客户端库”,那么关于替换的建议将是最受欢迎的。