シナリオ:JavascriptからXMLRPC呼び出しを行う必要があるWebページがあり、mimic.jsを使用して呼び出します。XMLRPCサーバーは、SimpleXMLRPCServerに基づいてPythonで記述されています。
Webページとサーバーが同じマシン上にある場合、すべてが正常です。ページが別のマシンからのものである場合、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クライアントライブラリが必要」のように単純な場合は、置き換えに関する提案を歓迎します。