如何使用Ruby on Rails从特定子域中获取cookie

hzbexzde  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(105)

在Ruby on Rails中,您可以使用散列中的选项删除和设置cookie,例如可以将:domain更改为sub.domain.com而不是.domain.com,以获得对子域cookie的一些控制。
我正在研究一个SPA,它从前端设置cookie,它设置的域是app.domain.com,在这里更改机制有点棘手。Rails应用程序需要读取.domain.com上的一个cookie,因此它当然返回nil
在Rails中有什么方法可以从子域中获取cookie的值吗?我已经看遍了cookies本身的文档和公共方法,没有找到任何有用的东西。

0s0u357o

0s0u357o1#

不,如果不改变cookie的设置方式,这是不可能的。
当设置cookie而没有明确设置域时,浏览器将仅将cookie发送到完全相同的域,甚至不会发送到该域的子域。这是在浏览器中实现的安全功能,当然,应用程序无法访问未由浏览器发送给服务器的请求的cookie。
当使用显式域(例如sub.domain.com)设置cookie时,该cookie将与该域和该域的所有子域(如foo.sub.domain.com)共享。但它仍然不与父域共享。
使其工作的唯一方法是将cookie显式设置为domain.com,这将告诉浏览器与domain.com共享此cookie,但也与所有子域共享,如sub.domain.comfoo.sub.domain.comsub2.domain.com

**注意:**在所有子域中共享cookie可能会产生严重的安全问题,具体取决于您的cookie的用途-特别是当您的某些子域不完全由您自己控制,而是由第三方控制时。例如,如果您以这种方式共享会话令牌,并将第三方SaaS产品配置为使用您的一个子域,则会话令牌将与该第三方工具共享。

相关问题