сессия cookie httponly ложные рельсы 3.1 - PullRequest
4 голосов
/ 02 декабря 2011

Я пытаюсь отключить httponly для использования в phonegap.Я использую rails 3.1 и разрабатываю, каждый из которых сообщил (но не задокументировал) способы сделать это, ни один из которых не работает:

# application.rb
config.session_options = { :httponly => false } # no effect
config.session = { :httponly => false } # undefined method `session='


# devise.rb
config.cookie_options = { :httponly => false } # also no effect

, чтобы проверить, я перезапустил сервер, удалил существующий файл cookie,и перезагрузил страницу.Столбец «http» все еще проверялся в отладчике Chrome.

help!

Ответы [ 2 ]

7 голосов
/ 28 декабря 2011

Этот маленький фрагмент, кажется, работает:

Testapp::Application.config.session_store :cookie_store, key: '_testapp_session', :domain => :all, :httponly => false
1 голос
/ 04 декабря 2011

Насколько я могу судить, это ошибка в рельсах. Возможно, опция была удалена, но документация осталась. Любые идеи по этому поводу будут приветствоваться!

Я провел несколько тщательных часов с ActionPack и не нашел ссылок на такой вариант конфигурации, но у меня до сих пор нет полной картины того, как он работает. В частности, есть хранилище cookie, которое хранит файлы cookie и записывает их в заголовок (и передается: httponly => true), но я не смог найти, как сеанс использует хранилище - с такими неопределенными вещами, как модуль Rails SessionManage, являющийся город-призрак пословиц.

Я взломал промежуточное ПО, которое выполняет эту работу:

# application.rb:
    config.middleware.insert_before ActionDispatch::Cookies, "UnshieldCookie" # remove httponly. 

# unshielded_cookie.rb
class UnshieldCookie
  def initialize(app)
    @app = app
  end

  def call(env)
    status, headers, body = @app.call(env)

    headers['Set-Cookie'].gsub!('HttpOnly', '') if headers['Set-Cookie'].present?

    [status, headers, body]
  end
end
...