0

シナリオ: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クライアントライブラリが必要」のように単純な場合は、置き換えに関する提案を歓迎します。

4

1 に答える 1

1

POSTリクエスト(実際のXMLRPCメソッド呼び出し)からの応答にも、ACA-OriginヘッダーとACAヘッダーヘッダーを追加する必要があったようです。

于 2012-07-11T17:13:28.283 に答える