2014-07-26 72 views
0

我在服務器邊欄和前端只使用html 並通過ajax從html頁面訪問ruby控制器。無法在控制器的瀏覽器中存儲cookie

和我的HTML文件部署在Tomcat和我做跨域Ajax請求

我在瀏覽器的響應與所有細節完整的頭。 仍未在瀏覽器中設置Cookie。

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS 
Access-Control-Allow-Origin: localhost:8080 
Access-Control-Max-Age:1728000 
Cache-Control:max-age=0, private, must-revalidate 
Connection:close 
Content-Type:application/json; charset=utf-8 
ETag:"08499f242d03267cf0777a855aacf33e" 
Server:thin 1.6.2 codename Doc Brown 
Set-Cookie:request_method=POST; path=/ 
Set-Cookie:remember_token=oKk0zsjd4BpyXC_39k0rUA; path=/; expires=Wed, 26 Jul 2034 15:05:51 -0000 
Vary:Origin 
X-Content-Type-Options:nosniff 
X-Frame-Options:SAMEORIGIN 
X-Request-Id:111f78ff-0dc8-4926-b301-a7e58f655619 
X-Runtime:0.280800 
X-UA-Compatible:chrome=1 
X-XSS-Protection:1; mode=block 

如果有一個人知道這個情況請建議我..

在此先感謝

回答

1

您有一個有趣的設置。我想知道是什麼阻止你將整個站點託管在rails實例之上。默認情況下,用戶需要啓用一些瀏覽器安全設置。如果我使用這個網站,這會讓我感到不適。就這樣吧,聽起來你已經在你的rails應用上啓用了CORS。我假設你至少使用jQuery 1.5+。您在ajax調用中需要的兩個設置是crossDomain: truexhrFields : { withCredentials : true }。在Ajax應該是這個樣子:

$.ajax({ 
    'url' : 'your_cross_domain_url', 
    'data' : {}, 
    'type' : 'POST', 
    'crossDomain : true, 
    'xhrFields' : { 
    'withCredentials' : true 
    }, 
    success: function(data){ 
    //do stuff 
    }, 
    error: function(data) { 
    // do other stuff 
    } 
}); 

此外,您的用戶可能需要啓用此設置:

Chrome瀏覽器>設置>高級設置>隱私設置>內容設置>阻止第三方Cookie和網站數據

的Safari>首選項>隱私>阻止cookies和其他網站數據>從不

其他瀏覽器>不知道

+0

謝謝的塑化劑。它幫助我分配。 –

+0

它看起來像你有一個錯字。 「跨域」 –