私のJSON-RPCクライアント(dojo JSON-RPCを使用するブラウザー)は、 myserver.com / 12345(Python 2.5、SimpleJSONRPCServer)上のJSON-RPCサーバーにJSON-RPC要求(dojo.callRemote)を送信します。
次に、サーバーはヘッダー「OPTIONS / HTTP / 1.1」を含むHTTPリクエストを取得しますが、これはデフォルトでは処理できないため、このリクエストのカスタムハンドラーを作成しました。
ブラウザからのリクエストヘッダーには次のように書かれています。
OPTIONS / HTTP/1.1
Host: myserver:12345
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100214 Linux Mint/8 (Helena) Firefox/3.5.8 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.7,de;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Origin: http://myserver.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
そして、私が送信する応答は次のようになります。
HTTP/1.0 200 OK
Server: BaseHTTP/0.3 Python/2.5
Date: Mon, 05 Apr 2010 18:58:34 GMT
Access-Control-Allow-Method: POST
Access-Control-Allow-Headers: POST
Allow: POST
Content-Type: application/json-rpc
Content-length: 0
しかし、ブラウザで次のエラーが発生します。
エラー: http://myserver.com: 12345 status:0を読み込めません
JSONサービスがネットから到達可能であることを確認しました。
ここで問題となるのは、ブラウザ(Firefoxなど)は、応答の聞き手が言うことを何を期待しているのかということです。それとも問題は他の場所にありますか?