ドメインオプションを使用してレールでクッキーを設定します
-
20-09-2019 - |
質問
私は1つのドメインにクッキーを設定し、他からアクセスしようとしています。これは可能でしょうか?
ここで私は私のアプリでやっているものです。
コントローラにおいて、テストアクションはこのURLを介してアクセスされる:
の http://myapp.com/account/test のの
def test
cookies[:foo] = {
:value => 'something',
:domain => 'myapp.heroku.com'
}
end
同じコントローラで、TEST2アクションはこのURLを介してアクセスされる:
の http://myapp.heroku.com/account/test2する の
def test2
puts "foo=#{cookies[:foo]}"
end
が、クッキーの値は[:fooの]は常に空白です。それはheroku.comドメインからのクッキーにアクセスすることが可能です。私は設定を考えた:domainオプションは、これを許可します。
ありがとう。
解決
:ドメインオプション(と一般的にはCookieにドメインを設定するには)だけは本当にサブドメイン間で動作します。すなわちapp1.mysite.comとapp2.mysite.comのための - あなたは.mysite.comにCookieドメインを設定することができ、それは、サブドメイン間で共有しています。
。これはクッキーが動作するように設計されているだけの方法です。 myapp.comとmyapp.heroku.comので、この方法は仕事に行くされていないドメインを設定しようと、別のドメインではなく、サブドメインです。
があり、真のクロスドメインのクッキーを達成するために、いくつかの方法があります - しかし、彼らはむしろ関与。に
他のヒント
あなたは、異なるドメインのためにこれを行うことはできませんが、サブドメインのためにそれを行うことができます。だから、例えば、
ドメインexample.com
上で実行されているアプリはsubdomain.example.com
のためではなくexampleapp.com
のCookieを設定することができます。
私はそれが他の、任意のドメインのクッキーを設定することができれば、大規模なセキュリティ/プライバシーの問題があるだろう、追加する必要があります。
あなたはenvironment.rbにで次の操作を実行して、すべてのドメインで同じクッキーを設定することができます:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']
を参照ここにドキュメントについてを。