簡體   English   中英

在Rails 4和Ember中的所有子域上設置Cookie

[英]Setting a cookie on all subdomains in Rails 4 and Ember

我們有一個Rails應用程序,它是在api.domain.com運行的API組件,而在api.domain.com一個在www.domain.com運行的前端應用程序。

當Ember.js將POST請求發送到API中的路由/events ,我們希望API設置cookie來記住唯一的用戶標識符。

因此,事件控制器中的此方法:

def set_tracking_cookie
  cookies[:our_company_distinct] = {
    value: create_identifier,
    expires: 1.year.from_now,
    domain: :all
  }
end

如您所見,cookie設置在整個域上,並設置為在一年后過期。

關鍵是,下次Ember查詢API時,它將能夠讀取此cookie。 然而,這種情況並非如此。

每次前端查詢API時,API都找不到cookie,也不會在我的開發人員工具的cookie中顯示它。

Ember請求將Access-Control-Allow-Credentials標頭設置為true ,並且我可以確認Cookie確實是在API響應中使用域,名稱,路徑,有效期等的正確值發送的。

我想念什么嗎?

謝謝!

對於通過這種方式發送/接收Cookie遇到問題的其他任何人,在調試並最終解決該問題時,我發現有些有用的東西:

  • 當您使用Chrome瀏覽器(或其他任何瀏覽器)的devtools時,請檢查每個請求並進行檢查,以查看Cookie是否已從您希望將其發送到的請求上的API發送,以及是否來自Ember的所有后續請求(或不論其他哪種JS框架都可以發送此請求。 在Chrome中,轉到“網絡> [請求]> Cookies”。 確保前端正確發送了cookie,並且確實確實正確接收了cookie。
  • 我們發現這是向Ember添加對CORS cookie的支持的最好方法,例如: http : //discuss.emberjs.com/t/ember-data-and-cors/3690

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM