IOS11を搭載したiOSデバイスでWebサイトをテストしていましたが、ブラウザーがAPIからの応答を受け入れないため、破損していることがわかりました。リモートデバッガーを使用して、CORS許可エラーが発生していること、および応答本文とHTTPヘッダーが除去されていることを確認できました。これは、すべてのモバイルiOSブラウザー(Chrome/Safari)で発生しているようで、CORS応答ヘッダーをワイルドカード値に変更した後も引き続き発生しました。ただし、他のすべてのブラウザー/ OS/iOSバージョンは完全に動作しています。 APIからのネットワーク応答、APIの応答ヘッダー、およびconsoleから取得するエラーを添付しました。
これを引き起こしている、または失敗している可能性のあるiOS11について何かがありますか?さらに診断を得ることができる方法はありますか? (
ドメインAでホストされ、ドメインBのAPIにデータを投稿するフォームで同様の状況が発生しました。ドメインAからのPOSTリクエストには、ヘッダー「x-api-key」ドメインBには関係ありません
APIへのプリフライトOPTIONSリクエストへの応答にはヘッダーが含まれていました
これは、iOS上のブラウザーを除くすべてのブラウザーで正常に機能しました。最終的に判明したように、Access-Control-Allow-Headersにワイルドカード*を指定しても、iOSブラウザーでは機能しません。 OPTIONSリクエストへの応答では、ドメインBのサーバーに関連しないヘッダーがあったとしても、POSTリクエストに存在するすべてのヘッダーを指定する必要があります。 POSTリクエスト。
応答ヘッダーを
(ヘッダーx-api-keyがサーバーBで処理されない場合でも)
私たちのケースでは、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" />
私は同じ問題に直面しました。
私の場合の問題は、本文が大きすぎてnginxがそのリクエストをアプリケーションに渡さずに接続を強制終了したため、nginxがファイルのアップロードを許可しないことでした。 client_body_max_size 10M
を変更しましたが、うまくいきました。 nginxエラーログを調べてください!
一日中私を理解するためにかかった。