7

クロス ドメイン リクエストをサポートする REST API を実装しています。CORSを使用して、これを達成したいと考えています。ほとんどすべてのリクエストは「単純ではない」ものです。つまり、すべての非 GET リクエストに対して、ブラウザからプリフライト リクエストを送信する必要があります。

プリフライト/OPTIONS リクエストの量を制限するために、ブラウザーに OPTIONS リクエストをキャッシュさせようとしています。これは Firefox と Safari では機能するようですが、Chrome では機能しません。Chrome がプリフライト リクエストを 10 分間しかキャッシュしないことはわかっていますが、私の場合はキャッシュがまったく行われないようです。

Chrome で送受信される HTTP リクエストとレスポンスは次のとおりです。

リクエスト:

OPTIONS /api/v1/sessions HTTP/1.1
Host: xxxxxxx
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: http://localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36
Access-Control-Request-Headers: content-type
Accept: */*
Referer: http://localhost:8000/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4

応答:

HTTP/1.1 200 OK
Date: Sun, 26 Jul 2015 09:33:27 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.9
Cache-Control: private, max-age=1440, pre-check=1440
Access-Control-Allow-Origin: http://localhost:8000
Access-Control-Allow-Methods: GET,POST,PATCH,DELETE
Access-Control-Max-Age: 86400
Access-Control-Allow-Headers: content-type
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
4

2 に答える 2