Можно ли 'Установить Cookie' для каждого запроса, полученного в Ruby on Rails 3? - PullRequest
0 голосов
/ 03 января 2011

Я хотел бы загружать куки-файлы всегда и везде на моем веб-сайте, потому что когда мое приложение RoR получает и принимает «внешний» HTTP-запрос (например, REST API), куки-файлы не загружаются (см. RFC2109 ) , Поэтому их значения недоступны.

Файлы cookie доступны только в том случае, если в моем приложении сделан HTTP-запрос.

Ответы [ 4 ]

2 голосов
/ 03 января 2011
new_cookies = {"Cookie" => "mycookie=1234;myothercookie=4567"}
Net::HTTP.get( URI.parse( http: //app1.website.com/users ),  new_cookies)
1 голос
/ 03 января 2011

Я только что попробовал это с Firecookie:

  1. Создан файл cookie «mycoolcookie» для домена «.stackoverflow.com»
  2. Пошел на stackoverflow.com, firebug показал, что cookie был отправлен в заголовке запроса.
  3. Зашел на meta.stackoverflow.com, firebug показал, что cookie был отправлен в заголовке запроса.
  4. Пошел на chat.stackoverflow.com, firebug показал, что cookie был отправлен в заголовке запроса.

Файл cookie автоматически отправляется браузером, сервер никогда не может запросить отправку ему файла cookie.

1 голос
/ 03 января 2011

Все браузеры будут автоматически отправлять любые куки, которые вы устанавливаете с вашего домена, вы можете проверить их, просто позвонив по номеру request.cookies из любого метода контроллера. Не имеет значения, был ли запрос инициирован из вашего приложения (например, перенаправление 302) или нет.

0 голосов
/ 03 января 2011

REST API, как правило, не сохраняют состояния, поэтому вам следует избегать использования серверных сеансов или клиентских файлов cookie.Если вы хотите указать, что пользователь захватывает только принадлежащие ему ресурсы, используйте подход вложенных ресурсов Rails, который приводит к вызову, подобному:

http://abc.com/user/user001/books

Для всех книг, принадлежащих user001.

Если вы хотите реализовать безопасность, сначала вы должны использовать HTTPS вместо HTTP.Для фактической реализации вы можете использовать Basic Authentication и установить имя пользователя / пароль в заголовке запроса, или вы можете использовать что-то вроде OAuth, которое устанавливает токен для пользователя, которого они передают с каждым запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...