ドメインオプションを使用してレールでクッキーを設定します

StackOverflow https://stackoverflow.com/questions/1932058

  •  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']

を参照ここにドキュメントについてを。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top