CORSリクエストのサポートをJava Webアプリケーションに追加しています。何らかの不明な理由により、FirefoxがContent-Type
ヘッダーを正しく送信または受信していません。アプリケーションはJetty Webサーバー上で動作しますが、すべてがChromeで正常に動作します。CORSプリフライトがFirefoxで動作しない、Chromeで動作する
問題がFirefox、Jetty、またはGoogleのフロントエンドアプリケーションにあるかどうかはわかりませんが、何か変わっています。 Firefoxのに応じ
リクエストとレスポンスヘッダ:
要求
Host: localhost:8889
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization,content-type
Origin: http://localhost:7778
DNT: 1
Connection: keep-alive
応答
Access-Control-Allow-Origin: http://localhost:7778
Content-Length: 0
Date: Wed, 14 Sep 2016 17:10:36 GMT, Wed, 14 Sep 2016 17:10:36 GMT
Server: Jetty(8.1.14.v20131031)
access-control-allow-credentials: true
access-control-allow-headers: authorization, -type
access-control-allow-methods: POST
とChromeで行われた同じ要求:
要求
OPTIONS *redacted* HTTP/1.1
Host: localhost:8889
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: http://localhost:7778
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Access-Control-Request-Headers: authorization, content-type
Accept: */*
DNT: 1
Referer: http://localhost:7778/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
応答
HTTP/1.1 200 OK
Date: Wed, 14 Sep 2016 16:14:34 GMT
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: authorization, content-type
Access-Control-Allow-Methods: POST
Access-Control-Allow-Origin: http://localhost:7778
Content-Length: 0
Date: Wed, 14 Sep 2016 16:14:34 GMT
Server: Jetty(8.1.14.v20131031)
要求を行うコードは、プレーンjQueryの呼び出しです。私は桟橋とFirefoxの間に奇妙な相互作用を探してみた
$.ajax({
"url": "http://localhost:8889/...",
"method": "POST",
"accepts": "*/*",
"headers": {
"Authorization": "Basic ..." // yes, I know. it's a legacy app
},
"xhrFields": {
"withCredentials": true
},
"contentType": "application/json",
"data": "..."
})
は、Mozillaのバグトラッカー(運)の周り掘って、両方のブラウザで無効にすべての拡張機能は、任意の奇妙なプラグインの問題を解消します。これまでに私が行ったことは何の違いもありません。私はここでウィットの終わりです。私は何が欠けていますか?
[Jetty 8はEOL(End of Life)](https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00069.html)アップグレードを検討してください。 –
残念ながら、これは現在オプションではありません。私はアップグレードすることができるようになるとは思っていますが、現在は既存の機能の範囲外です。 しかし、もしJetty 8がCORSサポートをバグしているのであれば、私たちはアップグレードに向けて私たちに力を与えるかもしれません。 – ChimericDream
応答で 'access-control-allow-headers:authorization、-type'は文字通りサーバが実際に返すものですか? 'content-type'の代わりに' -type'だけありますか? – sideshowbarker