2017-04-04 17 views
0

javascriptのシングルページアプリケーションでは、フロントエンドへのユーザーの最初の要求時に、クッキーがNode JS Expressで設定されます。フロントエンドアプリとバックエンドサーバー間でCookieを共有するにはどうすればよいですか?

Fetch APIに「credentials:include」オプションを追加することで、クレデンシャルがリクエストに含まれます。 最初のレンダリングは、サーバーサイドのリアクションがあるサーバー側です。

デベロッパーツールでCookieが表示されます。それはフロントエンドへの要求ごとに送信されますが、バックエンドへは送信されません。

フロントエンドとバックエンドは両方ともノードサーバーです。開発中、彼らはlocalhostの異なるportsにあります(hostsファイルにドメインを設定しようとしましたが、違いはありません)。ステージングでは、apiサーバはフロントサーバドメインのサブドメイン上にあります。どちらも動作しません。

同じCookieを共有できますか、それぞれに対して1つのCookieを作成する必要がありますか?私は、バックエンドへのリクエストのためにcookieを設定できないようです。これは、devまたは異なるサブドメインの異なるポートがステージングするためです。

答えて

2

私はそれを理解したと思います。

一部のリクエストではCookieが送信されましたが、他のリクエストでは送信されませんでした。リクエストメソッドをチェックすると、メソッドタイプが "OPTIONS"(プリフライト)のときにクッキーは送信されません。これは正常です。

回避策は、リクエストメソッドがOPTIONSの場合はCookieを確認しないようにし、この場合は200個の空のレスポンスを送信するだけで、実際のリクエストが処理され、クッキーが送信されます。

関連する問題