RoRアプリケーションが「外部」HTTPリクエスト(REST APIなど)を受信して受け入れると、Cookieがロードされないため、いつでもどこでもCookieをロードすることができます(RFC2109を参照)。したがって、その値にはアクセスできません。Ruby on Rails 3で受け取ったリクエストごとに 'Set-Cookie'を使うことは可能ですか?
Cookieは、アプリケーションで「内部的に」HTTPリクエストが行われた場合にのみアクセスできます。
RoRアプリケーションが「外部」HTTPリクエスト(REST APIなど)を受信して受け入れると、Cookieがロードされないため、いつでもどこでもCookieをロードすることができます(RFC2109を参照)。したがって、その値にはアクセスできません。Ruby on Rails 3で受け取ったリクエストごとに 'Set-Cookie'を使うことは可能ですか?
Cookieは、アプリケーションで「内部的に」HTTPリクエストが行われた場合にのみアクセスできます。
REST APIは一般的にステートレスなので、サーバーサイドセッションやクライアントサイドのCookieは使用しないでください。
USER001に属するすべての書籍についてはhttp://abc.com/user/user001/books
:あなたがそれらに属するユーザのみグラブリソースことを示すためにしたい場合などのコールで結果ことを、Railsのネストされたリソースのアプローチを使用します。
セキュリティを実装する場合は、まずHTTPの代わりにHTTPSを使用する必要があります。実際の実装では、基本認証を使用してリクエストヘッダーでユーザー名/パスワードを設定するか、リクエストごとに渡すユーザーのトークンを設定するOAuthのようなものを使用できます。
すべてのブラウザは、ドメインから設定したCookieを自動的に送信します。コントローラメソッドからrequest.cookies
を呼び出すだけで、すべてのブラウザが簡単に確認できます。要求がアプリケーション内から開始されたかどうかは関係ありません(302リダイレクトなど)。
私はちょうどFirecookieでこれを試してみました:
ブラウザによってCookieが自動的に送信されるため、サーバーはCookieの送信を要求できません。
私は単純なGET HTTPリクエスト "Net :: HTTP.get(URI.parse( 'http://app1.website.com/users'))をapp2からapp1へと 'app1 /コントローラ/ users_controllers.rb 'は、クッキーは追跡されません(要求ヘッダーには存在しません)。設定オプションを正しく設定しない可能性はありますか? – user502052
新しいクライアントのように動作しているサーバーから新しい要求を作成しています。リクエストヘッダーにクッキーを手動で設定する必要があります。下記の例をご覧ください。 –
新しいクライアントのように動作しない可能性はありますか?もしそうなら、どうですか? – user502052
new_cookies = {"Cookie" => "mycookie=1234;myothercookie=4567"}
Net::HTTP.get(URI.parse(http: //app1.website.com/users), new_cookies)
「Man in the middle」攻撃が存在する可能性があるため、HTTP GETリクエストを使用してクッキーデータ(私の場合はcurrent_user_id)を送信することは安全ではないと思います。についてどう思いますか? – user502052
ユーザーのブラウザからの元のリクエストは、HTTP GETの権利ですか?これは、自分のサブネット内の別のサーバーへの要求よりも傍受される可能性が高くなります。もちろん、値を暗号化するか、httpsを使用することができます。 –
このアプローチを使用していますか?それを使用するようにアドバイスしますか?たぶん、このデータフローや関連する問題を避けるために、いつでもどこでもCookieを読み込むための優れたソリューションがあります。たとえば、現在のユーザーのログインを確認するためにGETリクエストでCookie値を常に渡す必要がある場合、このアプローチを使用してREST APIを実装することはできません。 – user502052
私はそれを行い、空白のハッシュを受け取りました。おそらく、私はapplication.rb、enviroment.rb、...に何かを設定しなければなりませんか? – user502052
Firefoxを使用している場合は、Firebug(http://getfirebug.com/)とFirecookie(https://addons.mozilla.org/en-US/firefox/addon/6683/)をインストールし、あなたが探しているクッキーは実際にブラウザに設定されています。 –
私はすでにこれもしました。クッキーであれば問題ありません。 – user502052