web-dev-qa-db-ja.com

iOS11がすべてのモバイルブラウザーでCORS問題を引き起こす

IOS11を搭載したiOSデバイスでWebサイトをテストしていましたが、ブラウザーがAPIからの応答を受け入れないため、破損していることがわかりました。リモートデバッガーを使用して、CORS許可エラーが発生していること、および応答本文とHTTPヘッダーが除去されていることを確認できました。これは、すべてのモバイルiOSブラウザー(Chrome/Safari)で発生しているようで、CORS応答ヘッダーをワイルドカード値に変更した後も引き続き発生しました。ただし、他のすべてのブラウザー/ OS/iOSバージョンは完全に動作しています。 APIからのネットワーク応答、APIの応答ヘッダー、およびconsoleから取得するエラーを添付しました。

これを引き起こしている、または失敗している可能性のあるiOS11について何かがありますか?さらに診断を得ることができる方法はありますか? enter image description hereenter image description hereenter image description here

12
Daryl1976

ドメインAでホストされ、ドメインBのAPIにデータを投稿するフォームで同様の状況が発生しました。ドメインAからのPOSTリクエストには、ヘッダー「x-api-key」ドメインBには関係ありません

APIへのプリフライトOPTIONSリクエストへの応答にはヘッダーが含まれていました

  • Access-Control-Allow-Origin: https:// domainA
  • Access-Control-Allow-Headers:*
  • Access-Control-Allow-Methods:*

これは、iOS上のブラウザーを除くすべてのブラウザーで正常に機能しました。最終的に判明したように、Access-Control-Allow-Headersにワイルドカード*を指定しても、iOSブラウザーでは機能しません。 OPTIONSリクエストへの応答では、ドメインBのサーバーに関連しないヘッダーがあったとしても、POSTリクエストに存在するすべてのヘッダーを指定する必要があります。 POSTリクエスト。

応答ヘッダーを

  • Access-Control-Allow-Headers:Accept、Content-Type、X-Requested-With、x-api-key

(ヘッダーx-api-keyがサーバーBで処理されない場合でも)

7
Branzino

私たちのケースでは、APIからOPTIONSプリフライトリクエストを行うときに、httpヘッダー情報を追加することで問題を解決できました。 SafariはCORSリクエストのワイルドカードエントリを好まないようで、さらに、Access-Control-Allow-Header値で指定されたすべてのヘッダーが必要です。他のブラウザーでは不要な「標準」ヘッダーも必要です。次のヘッダーをすべてのプリフライトリクエストに追加することで、サイトとAPIの間でX-Domainリクエストを再度取得することができました。

  <!-- headers for preflight CORS response-->
<add key="Access-Control-Allow-Origin" value="<exact name of site>" />
    <add key="Access-Control-Allow-Methods" value="POST, GET, OPTIONS, DELETE" />
    <add key="Access-Control-Allow-Credentials" value="true" />
    <add key="Access-Control-Allow-Headers" value="Accept,Origin,Content-Type,X-LS-CORS-Template,X-LS-Auth-Token,X-LS-Auth-User-Token,Content-Type,X-LS-Sync-Result,X-LS-Sequence,token" />
1
Daryl1976

私は同じ問題に直面しました。

私の場合の問題は、本文が大きすぎてnginxがそのリクエストをアプリケーションに渡さずに接続を強制終了したため、nginxがファイルのアップロードを許可しないことでした。 client_body_max_size 10Mを変更しましたが、うまくいきました。 nginxエラーログを調べてください!

一日中私を理解するためにかかった。

0
Vaibhav Kaushal