2011-12-02 3 views
4

phonegap에서 사용하기 위해 httponly를 해제하려고합니다. 내가 서버를 다시 시작 테스트하는세션 쿠키 httponly false 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 

는 기존의 쿠키를 삭제하고 다시로드 : 나는 각각의보고 (그러나 문서화되지 않음) 어느 것도이 작업을 수행하는 방법을 한 레일 3.1 useing 및 고안하고있어 그 페이지. 'Http'열은 크롬 디버거에서 계속 확인되었습니다.

도움!

답변

7

이 작은 조각이 작동하는 것 같다 :

나는 일을 수행하는 미들웨어를 해킹

Testapp::Application.config.session_store :cookie_store, key: '_testapp_session', :domain => :all, :httponly => false 
0

내가 알 수있는 한, 이것은 레일에있는 버그입니다. 아마도 옵션이 제거되었지만 문서가 그대로 유지되었습니다. 이것에 대한 아이디어는 언제든지 환영합니다!

나는 ActionPack으로 몇 시간을 보냈다. 그런 구성 옵션에 대한 참조를 찾을 수는 없지만, 어떻게 동작하는지에 대해서는 아직 완전히 알지 못한다. 특히 쿠키를 보유하고 쿠키를 헤더에 씁니다 (및 전달되는 : httponly => true) cookiestore가 있지만 세션이 저장소를 사용하는 방법을 찾을 수 없습니다. 레일스 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