/api/v1/support/*
パスに一致するPOST要求に対して、すべてのエンドポイントでCORSを有効にする必要があります。"cors"ライブラリを使用してExpressルート上でCORSを設定する方法
資格情報をtrueにして/api/v1/support/graphql
にPOSTリクエストをしていますが、プリフライトリクエスト(OPTIONSのもの)が401を返します。何が間違っているのか分かりません。
これは(私は下のこのサンプルではダミーのための実際のドメインを変更したことに注意してください)私の設定です:
const corsOptions = {
origin: /mydomain\.com$/,
credentials: true,
maxAge: 3600
};
app.options('/api/v1/support/*', cors(corsOptions));
app.post('/api/v1/support/*', cors(corsOptions));
// graphQLRouter is an instance of express.Router()
app.use('/api/v1/support/graphql', [ fowardIP, validateTokenInCookie ], graphQLRouter);
を助けることも
アクセス制御を設定する、」スペックすなわちアクセス制御 - 許可 - メソッドごとに法的request.OPTIONSです.... '、ALLOW_METHODS'、 'ALLOW_HEADERS'(access_controlヘッダー)を参照 –
ブラウザでは、 'preflight'リクエストを行うブラウザに加えて、サーバーが仕様に準拠するように調整する必要があります。 CORSプリフライトOPTIONS要求で資格情報を送信しないでください。そして、あなたのアプリケーションコードのどこかに明らかに、 '/ api/v1/support/graphql'ルートには認証が必要です。これはPOST要求には問題ありません。フロントエンドコードでPOSTの一環としてクレデンシャルを送信すると、それは期待どおりに動作します。 OPTIONSリクエストではうまくいきません。認証を必要とするサーバーがなくても、資格情報を送信せずに動作する必要があります。 – sideshowbarker