私はあるドメインapp.example.com
でホストされているクライアントと他のサブドメインのAPIサーバーapi.example.com
を持っています。開発モードでは、localhost:3000
とlocalhost:4000
があります。他のドメインにHTTPリクエストを送信するときにヘッダーのCookieが失われる
Cookie
ヘッダーを含むHTTP要求を送信しようとしています。これは、すべてが同じサーバーとドメイン上にあってもうまくいきました。次に、コードを変更し、プロパティーをAxios
HTTPライブラリーに含めてCORSを追加しました。開発モードでは動作しますが、クッキーはリクエストで送信されますが、プロダクションではこれが壊れます。すべてのリクエストはうまく動作しているようです(OPTIONS
)。POST
リクエストの後には200
ishの応答があります。
これは、APIサーバー上の私のCORSの設定です:
server.all('/*', (req, res, next) => {
res.header('Access-Control-Allow-Origin', DEV ? 'http://localhost:3000' : 'https://example.com')
res.header('Access-Control-Allow-Headers', '')
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
res.header('Access-Control-Allow-Credentials', 'true')
next()
})
と、これは私のaxios
要求がどのように見えるかです:
axios(`${API_URL}/someEndpoint`, {
method: 'post',
withCredentials: true,
data,
})
このpostと答えは、ドメイン間でクッキーを共有することは不可能だと言います。今私は非常に混乱しています。
どのユーザーがリクエストを送信したかを検出するために、ヘッダーにCookieを使用します。私がヘッダーでクッキーを失った場合、私はもはやどのユーザーから送られた(ログインしていない)リクエストを追跡することができなくなり、このデータを統計のために集めることができなくなります。
私のアプリケーションはモノリスでしたが、レンダリングサーバーからAPIサーバーを分離する必要がありました。サーバーが異なるドメインを使用していても、ヘッダー内のCookieを読み取ることは可能ですか?