tags : REST API, JavaScript

なんとなく CORS がわかる…はもう終わりにする。

あるオリジンで動いている Web アプリケーションに対して、別のオリジンのサーバーへのアクセスをオリジン間 HTTP リクエストによって許可できる仕組み

読み方は コルス or シーオーアールエス

CORS ではリクエストの種類が Simple Request と Preflight Request の2種類に分けられています。

Basic認証の領域へプリフライトでリクエストしてハマった

プリフライトリクエストの場合ブラウザが勝手にAuthorizationヘッダーを削除してしまってBasic認証を突破できず401になってしまう。

シンプルリクエストではヘッダは Accept Accept-Language Content-Language Content-Type のどれかでなければならず、Authorizationを含められない。

別オリジンでCORSとなり、Basic認証がある場合、 Basic認証のAuthorizationヘッダーも投げても突破できない。

解決策は2つ

  • Basic認証ではなく、サーバーの下のアプリケーションレベルでの認証を行う
  • プリフライトリクエストはBasic認証を行わない