我有两个应用程序,一个是 Sinatra 应用程序,另一个是 Rails 应用程序。我在 Rails 应用程序中设置了签名的 cookie,我需要将该 cookie 从浏览器发送到 Sinatra。
问题是如果 cookie 已签名,我如何从我的 Sinatra 应用程序中查看该 cookie 的内容?
这些应用程序位于具有不同子域的同一域下。这是可能的,甚至是安全的吗?
我有两个应用程序,一个是 Sinatra 应用程序,另一个是 Rails 应用程序。我在 Rails 应用程序中设置了签名的 cookie,我需要将该 cookie 从浏览器发送到 Sinatra。
问题是如果 cookie 已签名,我如何从我的 Sinatra 应用程序中查看该 cookie 的内容?
这些应用程序位于具有不同子域的同一域下。这是可能的,甚至是安全的吗?
您确实可以在子域之间共享 cookie。您需要将cookie域设置为.your-domain.com
注意前导点,这很重要。
要读取 cookie,这两个站点必须共享 cookie 签名密钥。
在 Sinatra 中,您可以在 Rack 中设置它:来自 Sinatra 常见问题解答
use Rack::Session::Cookie, :key => 'rack.session',
:domain => 'foo.com',
:path => '/',
:expire_after => 2592000, # In seconds
:secret => 'change_me'
因此,您需要设置与Rails.application.config.cookie_secret
Rails 配置中相同的秘密