問題の説明
Access-Control-Allow-Originは、Object Storage Service (OSS) バケットのクロスオリジンリソース共有 (CORS) ルールでアスタリスク (*) に設定され、Access-Control-Allow-Credentialsはフロントエンドコードでtrueに設定されます。 バケット内のオブジェクトに対するクロスオリジンリクエストに対して、次のエラーが返されます。
プリフライト要求に対する応答はアクセス制御チェックに合格しません: 要求の資格情報モードが「include」の場合、応答の「access-control-Allow-Origin」ヘッダーの値はワイルドカード「 * 」であってはなりません。
発生原因
ブラウザーのセキュリティポリシーでAccess-Control-Allow-Credentialsをtrueに設定する必要がある場合、Access-Control-Allow-Originをアスタリスク (*) に設定することはできません。 これにより、他のすべてのドメインからのドメインへのアクセスや、Cookie、Authorizationヘッダー情報、その他の機密情報などの資格情報の漏洩が防止されます。
ソリューション
クロスオリジンリクエストに資格情報を含める場合は、Access-Control-Allow-origin設定を
*
からhttps://example.com
などの特定のオリジンURLに変更します。 詳細については、「CORS」をご参照ください。クロスオリジンリクエストに資格情報を含めたくない場合は、コードでAccess-Control-Allow-credentialsをfalseに設定します。 サンプルコード:
xhr.withCredentials = false