2017-04-26 17 views
0

セットアップでは、バックボーンモデル、Nginxサーバーが使用されます。ユーザーはユーザー名とパスワードを入力し、ポストを介して渡されます。サーバーはセッションCookieを認証して返します。ChromeはCORSクッキーを保持しません

バックエンドとフロントエンドが同じサーバー上にある場合(たとえば、ローカルホスト経由で接続する場合)、Cookieが保存されます。ただし、接続がリモートの場合は、Chromeに保存されません。ただし、SafariとFireFoxに格納されています。

Ajaxは

$.ajaxSetup({ 
    crossDomain: true, 
    xhrFields: { 
     withCredentials: true 
    } 
}); 

を経由してリクエストヘッダが

POST /login HTTP/1.1 
Host: localhost:8102 
Connection: keep-alive 
Content-Length: 59 
Accept: application/json, text/javascript, */*; q=0.01 
Origin: http://127.0.0.1:9102 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36 
Content-Type: application/json 
DNT: 1 
Referer: http://127.0.0.1:9102/somefolder 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8 

レスポンスヘッダーはクッキーがうまく保存されますが、中にされ、FirefoxとSafariのでは

HTTP/1.1 200 OK 
access-control-allow-origin: http://127.0.0.1:9102 
access-control-allow-credentials: true 
vary: origin,accept-encoding 
access-control-expose-headers: WWW-Authenticate,Server-Authorization 
content-type: text/html; charset=utf-8 
set-cookie: na-auth-token=encrypted-string; Max-Age=86400; Expires=Thu, 27 Apr 2017 13:32:44 GMT; HttpOnly; SameSite=Strict; Path=/ 
cache-control: no-cache 
content-encoding: gzip 
Date: Wed, 26 Apr 2017 13:32:44 GMT 
Connection: keep-alive 
Transfer-Encoding: chunked 

されている設定ですChromeは応答を取得し、通知なしにCookieを送信します。

更新

は、クッキーは、実際に、しかし、あなたが戻って(例えばwindow.location.reload経由)のページに移動すると、クッキーが消え、ローカルホストのドメインの下に保存されています。

答えて

1

だから私の質問への答えは、私たちがパッケージ更新とフラグがisSameSiteを導入された

HAPI-AUTH-クッキーに

を使用していたライブラリに嘘をつきました。この値をfalseに変更して、cors cookieをページ読み込みの間に保持できるようにしました。

関連する問題