4

CORSを利用して別のサーバーからJSONデータを収集するWebアプリケーションを実装しました。サーバーは異なるサブドメインで実行されます。すべてが正しく実装されているようで、Chromiumで正常に動作します。以下は、Chromiumからの私のリクエストのコピーです。

私の問題は、Firefox(13.0.1でテスト済み)では、AJAXリソースに対してリクエストが行われないことです。プリフライトリクエストは送信されず、実際のリクエストも行われません。代わりに、XMLHttpRequest.send()関数から次のエラーが発生します。

[21:40:27.546] uncaught exception: [Exception... "Access to restricted URI denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)"  location: "http://192.168.1.99:2502/static/mootools-core-1.4.5.js Line: 5398"]

私はMootoolsのRequest.JSONオブジェクトを使用しています。これは、さまざまな追加のヘッダーを設定します。つまり、プリフライトが実際に必要になります。ただし、送信されることはありません。

残念ながら、データは機密性が高いため、JSONPはオプションではありません。

問題が何であるかについて誰かが洞察を持っていますか?どうもありがとう。


Chromiumの実例:

プリフライトリクエスト:

OPTIONS /api/resource HTTP/1.1
Host: dev0.mydomain.com
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://192.168.1.99:2502
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19
Access-Control-Request-Headers: origin, x-request, x-requested-with, accept
Accept: */*
Referer: http://192.168.1.99:2502/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: [redacted]

飛行前の応答:

HTTP/1.0 200 OK
Server: PasteWSGIServer/0.5 Python/2.7.3
Date: Fri, 29 Jun 2012 01:43:37 GMT
Content-Length: 0
Access-Control-Allow-Headers: Cookie, Origin, X-Request, X-Requested-With, Accept
Access-Control-Max-Age: 1
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://192.168.1.99:2502
Access-Control-Allow-Methods: GET
Content-Type: text/html; charset=UTF-8

「実際の」リクエスト:

GET /api/resource HTTP/1.1
Host: dev0.mydomain.com
Connection: keep-alive
Origin: http://192.168.1.99:2502
X-Request: JSON
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19
Accept: application/json
Referer: http://192.168.1.99:2502/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: [redacted]

「実際の」応答:

HTTP/1.0 200 OK
Server: PasteWSGIServer/0.5 Python/2.7.3
Date: Fri, 29 Jun 2012 01:43:37 GMT
Access-Control-Allow-Origin: http://192.168.1.99:2502
Content-Type: text/html; charset=UTF-8
Content-Length: 22
Access-Control-Allow-Credentials: true
4

1 に答える 1

3

答えは質問へのコメントに記載されています。私が提供した HTTP 認証のユーザー名が原因で、Firefox はリクエストを送信していませんでした。

于 2012-06-29T13:11:45.477 に答える