2016-11-25 12 views
4

最近、OSXとiOSの両方でCORS(Cross Origin Resource Sharing)リクエストが発生しました。 ChromeとFirefox。私はthe documentation of W3Cに従うと、サーバー側のプリフライトリクエストを処理し、私の応答は次のようである:クロスソースリソース共有の問題:プリフライトリクエスト後にOSX SafariとiOS Safariの両方でエラーが発生する

HTTP/1.0 200 OK 
Access-Control-Allow-Origin: http://192.168.1.96:4399 
Access-Control-Allow-Methods: POST 
Access-Control-Allow-Methods: GET 
Access-Control-Allow-Methods: OPTIONS 
Access-Control-Allow-Headers: Origin 
Access-Control-Allow-Headers: Authorization 
Access-Control-Allow-Headers: X-Requested-With 
Access-Control-Allow-Headers: Accept 
Access-Control-Allow-Headers: Access-Control-Request-Method 
Access-Control-Allow-Headers: Access-Control-Request-Headers 
Access-Control-Allow-Headers: DNT 
Access-Control-Allow-Headers: X-CustomHeader 
Access-Control-Allow-Headers: Content-Type 
Access-Control-Max-Age: 0 
Date: Fri, 25 Nov 2016 08:45:25 GMT 
Origin: http://192.168.1.96:4399 
Access-Control-Expose-Headers: Origin 
Content-Encoding: gzip 
Transfer-Encoding: chunked 

ような応答は、クロム、Firefox、およびAndroidのブラウザで正常に動作します:POSTリクエストが右プリフライトリクエストの後に送信されます。私は、サーバーからのプリフライトの応答を検査しますが、上記のように、それは同じ見つける...非常に多くの検索と試みた後

Failed to load resource: The network connection was lost. 

:しかし、Safariで、reflight要求にサーバの応答の後、私は、コンソールから、このようなエラーメッセージが表示されました時間は、私はまだそれが
:-(動作させることはできません前に問題に遭遇誰が、誰もが私が作ったものの間違い?非常に事前に
感謝を把握できますか?あります!

+0

はあなたのようなあなたは非常に感謝@sideshowbarker https://bugs.webkit.org/ – sideshowbarker

+0

で報告することがありSafariでバグを鳴らします。しかし、面白くて時折、私はOSX Safariの「開発」メニューから「クロス・オリジン制限を無効にする」オプションをチェックすると機能します。この問題はブラウザのセキュリティポリシーと関係している可能性があります。私は引き続きその問題を把握しようと考えています。 – BenMiracle

答えて

2

それはすべてですSafariについては、OPTIONSリクエストヘッダにoriginを追加してください。Access-Control-Request-Headers

これを修正するには、Access-Control-Allow-Headersでこのヘッダーを有効にする必要があります。

PS:参照同様の質問がCORS request not working in Safari

+0

OPはネットワークレベルでプリフライトリクエストが失敗したことを確認しています。 OPTIONSレスポンスが正しく設定されていません。しかし、彼は決して最初からその応答を得ていません。 – RavenHursT

+0

@RavenHursTいいえ、bruttoは不正なリクエストヘッダーに言及しています。したがって、これは正しい答えです(私は確認しました。 – thomaux

関連する問題