繁体   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