4

Play 2 (scala) でビルドされた b.otherdomain.com (https) の API に接続するドメイン a.domain.com (http) にシングル ページ アプリケーション (SPA) があります。

SPA の読み込み後、ユーザーは資格情報を入力し、アプリはhttps://b.otherdomain.com.com/loginに対して ajax 呼び出しを行います。

/login は Play Cookie を設定し、次のリクエストは十分に認証されています。すべてが Chrome と Firefox で動作します (CORS の制限により IE では動作しません)。

これは Safari で動作するはずですが、/login 呼び出しの後、次のリクエストで Cookie が返されないため、play は「401 許可されていません」という応答を返します。

これはバグですか、それともサーバー側の設定ミスですか? application.session.httpOnly と application.session.secure を変更する必要がありますか?

Safariインスペクターから見たものは次のとおりです。

/login headers :

URL de la requête:https://b.otherdomain.com//login
Méthode de la requête:POST
Code d’état:200 OK
En-têtes de requêteafficher la source
Accept:application/json, text/plain, */*
Content-Type:application/x-www-form-urlencoded
Origin:http://a.domain.com.com
Referer:http://a.domain.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
Données du formulaireafficher l’URL codée
email:foo@foo.com
password: foofoo
En-têtes de réponseafficher la source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://a.domain.com
Connection:keep-alive
Content-Length:31
Content-Type:text/plain; charset=utf-8
Set-Cookie:PLAY_SESSION=a71f93e3315fa9164dd7112841ccdb4a0f0c447b-     sessionId%3A6gtu7%21z.5i%218d%29v8yxy693n-s6zsuejpav_p67f9hb%7Ej%274h2de*jx3g35p%7Egzo0u;Path=/;HTTPOnly
Strict-Transport-Security:max-age=31536000

following request :

URL de la requête:https://b.otherdomain.com/users
Méthode de la requête:GET
Code d’état:401 Unauthorized
En-têtes de requêteafficher la source
Accept:application/json, text/plain, */* 
Origin:http://a.domain.com
Referer:http://a.domain.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
En-têtes de réponseafficher la source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://a.domain.com
Connection:keep-alive
Content-Length:24
Content-Type:text/plain; charset=utf-8
Strict-Transport-Security:max-age=31536000
4

1 に答える 1