2

あるドメインにCookieを設定し、別のドメインからアクセスしようとしています。これは可能ですか?

これが私のアプリで行っていることです:

コントローラでは、次の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

ただし、cookies [:foo]の値は常に空白です。heroku.comドメインからCookieにアクセスすることは可能ですか?:domainオプションを設定すると、これが可能になると思いました。

ありがとう。

4

3 に答える 3

3

別のドメインに対してこれを行うことはできませんが、サブドメインに対しては行うことができます。したがって、たとえば、ドメインで実行されているアプリはexample.com、のCookieを設定できますが、のCookieは設定できsubdomain.example.comませんexampleapp.com

追加する必要があります。他の任意のドメインにCookieを設定できる場合は、セキュリティ/プライバシーの大きな問題が発生します。

environment.rbで次の手順を実行することにより、すべてのドメインに同じCookieを設定できます。

 ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']

ドキュメントについては、こちらをご覧ください。

于 2009-12-19T05:35:40.350 に答える
2

:domainオプション(および一般にCookieにドメインを設定する)は、実際にはサブドメイン間でのみ機能します。つまり、app1.mysite.comとapp2.mysite.comの場合-Cookieドメインを.mysite.comに設定し、サブドメイン間で共有することができます。

これは、Cookieが機能するように設計されている方法です。myapp.comとmyapp.heroku.comは別々のドメインであり、サブドメインではないため、この方法でドメインを設定しようとしても機能しません。

真のクロスドメインCookieを実現する方法はいくつかありますが、それらはかなり複雑です。

于 2009-12-19T05:45:40.427 に答える
0

http://coderack.org/users/ahamid/middlewares/142-session-injectorを確認することをお勧めします

于 2011-04-04T21:06:42.537 に答える