2013-01-10 37 views
3

我有一個域名a.domain.com(http)上的單個頁面應用程序(SPA),它連接到b.otherdomain.com(https)上的api上播放2(scala )。播放sesion cookie不是由Safari發送的

加載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:[email protected] 
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 

感謝您的幫助

+0

這聽起來像是在以下鏈接SO相同的問題;如果它是一個可重現的問題,它可能是一個Safari錯誤:http://stackoverflow.com/questions/14206531/mobilesafari-wont-send-back-cookies-set-with-cors – monsur

回答

0

我有同樣的問題。它在Chrome中運行良好,但在Safari中完全沒有效果。我的理解是,這是與third party Cookies相關的Safari的一個新限制。

似乎沒有(好)的解決辦法。

選項: - 使用代理:服務器a上的setup和endpoint來調用b服務器端。 - 使爲B A C-名稱DNS條目被視爲一個

你可能想嘗試PayPal的跨域套房:https://medium.com/@bluepnume/introducing-paypals-open-source-cross-domain-javascript-suite-95f991b2731d