Saml-StategyでPassportを使用するNodeJS/Expressバックエンドを作成しています。私はフロントエンドとして外部IDプロバイダとVueJsを使用しています。NodeJS Passportは、リクエストがVueJSから来た場合にCORSのプリフライトを実行します。
ブラウザ(Chrome + IE)からバックエンドにAPIリクエストを行うと、すべて正常に動作します。要求はバックエンドに行き、IdPにGET要求として渡され、認証されます。
同じ要求を行うVueJsアプリケーションを読み込むと、OPTIONSがサポートされていないため、パスポートはCORPのプリフライト(OPTIONS)リクエストをIdPから404に戻します。私はVue-ResourceとAxiosを試しました。どちらも同じ結果でした。
残念ながらIdPの設定を変更することはできません。しかし、なぜバックエンドの私のパスポートは要求を別々に扱うのですか?何か案は?
API呼び出しとVueJsのリクエストヘッダーを比較しました。プレフライトの原因となるヘッダーが見つかりませんでした。
リポジトリ:https://github.com/tmschbgr/NodePassportExample
バージョン:
- ノード:8.9.0
- エクスプレス:4.16.2
- パスポート:^ 0.4.0
- パスポート-saml:^ 0.31.0
- ヴュー:^ 2.4.4
- Axios:^ 0.17.1