3

ユーザーがログインすると、Cookie を設定して別のサーバーにリダイレクトする Rails アプリがあります。http_only を false に設定しようとしましたが、ドメインが Rails アプリと同じでない限り、Cookie を表示することさえできません。Cookieを設定するために使用しているコードは次のとおりです。

cookies[:dev_appserver_login] = 
  { :value => "#{email}:#{nick}:#{admin}:#{hsh}",
    :domain => "webserver-to-redirect-to",
    :expires => 30.days.from_now }

redirect_to session[:dest_url]

Firefox でWeb Developer 拡張機能を使用して手動で Cookie を作成すると、正常に動作しますが、Rails では動作しません。何か案は?

4

3 に答える 3

9

サーバーへのリダイレクトとリダイレクトとは何ですか?'domain'は現在のホスト名または親ドメインにのみ設定できるため、a.example.comを使用していて、b.example.comにリダイレクトする場合は、'domain'を.exampleに設定する必要があります。コードスニペットで暗示されているb.example.comではなくcom 。

(そして、.com TLDのようなオープンドメイン自体はドメイン値として許可されていないため、a.example.comからb.somewhereelse.comにCookieを渡したい場合は、おそらくコードの変更を伴う、より複雑なソリューションが必要になります。 somewhereelse.comで。)

于 2008-10-22T23:10:37.780 に答える
1

ドメインがRailsアプリと同じでない限り、Cookieを表示することすらできません。

これがCookieの機能です。IPで直接アクセスしている場合、Webブラウザに関する限り、「ドメイン」はIPにすぎないため、同じルールが適用されます。

于 2008-10-23T00:50:41.683 に答える
0

/etc/hosts ファイルを編集し、アプリのホスト名を作成することで、開発モードでこれを回避できます。

127.0.0.1 app1.localdev.com, app2.localdev.com

次に、Cookie が作成されたら、ドメインを「.localdev.com」に設定します (前のピリオドに注意してください)。これにより、localdev.com の任意のサブドメインにあるすべてのアプリがそれを読み取ることができます。

もう 1 つのより広範なソリューション (本番デプロイには適していますが、セットアップの手間がかかります) は、サブアプリのパス プロキシをセットアップして、appdomain.com へのリクエストが app1 に送信され、appdomain.com/other-app/ にリクエストが送信されるようにすることです。他のアプリにプロキシされます。これにより、ルート ドメインを共有し、Cookie を簡単に共有できます。

于 2014-07-09T20:37:00.920 に答える