2011-10-26 12 views
6

He agregado force_ssl en mi ApplicationController, y se eliminó más tarde, pero ahora, todas las solicitudes siguen siendo solicitadas a https. He intentado agregar config.force_ssl = false a todos los archivos de configuración en application.rb y environments/development.rb, etc., pero no funciona. Cuando reinicio el servidor, las solicitudes se convierten a https. ¿Cualquier pista?Rails 3.1 ssl se usa incluso si desactivé ssl?

Actualizaciones: Esto ocurre solo cuando solicito la raíz de la aplicación, p. http://localhost:3000/, sin embargo, en mi archivo config/routes.rb he especificado claramente la url para la raíz: root :to => 'home#index'

Respuesta

11

que se está viendo los efectos de HTTP Strict Transport Security 's max-age, que es fijado por Rack::SSL (que config.force_ssl = true conjuntos arriba) a algo alto.

+1

Está en lo cierto, y @Adrein_Lamon la respuesta para borrar el caché del navegador hizo que la config.force_ssl = aplicación falsa cambiara en mi computadora – blnc

3

Además de reiniciar su aplicación, también debe borrar la caché del navegador.

0

yfeldblum es absolutamente correcto. Deshabilitarlo y hacer que Chrome olvide el encabezado puede ser un problema.

Esto es lo que acabó poniendo en mi config/application.rb

config.middleware.insert_before(Rack::Lock, Rack::SSL, hsts: false, exclude: proc { |env| 
    !env['PATH_INFO'].start_with?('/manage') 
}) 

** Nota A: HSTS: falso es el bit crítico

** Nota B: Estoy usando 1,9 , entonces mi sintaxis hash puede ser diferente a la tuya.

Más allá de eso, tuve que abrir esta url en Chrome chrome: // net-internals/# hsts y eliminar los dominios que tenían este encabezado.

Afortunadamente esto no llegó a la producción, porque Rack :: SSL establece una caducidad muy larga en este encabezado.

1

Para aquellos que todavía no está claro, esto es lo que hice para hacer el truco.

En application_controller.rb:

before_filter :expire_hsts 

[...] 
private 
    def expire_hsts 
    response.headers["Strict-Transport-Security"] = 'max-age=0' 
    end 

En production.rb

config.force_ssl = false 

Borrar la caché de su navegador web y eso es todo!

0

si estás usando nginx ver opción:

proxy_set_header X-Forwarded-Proto https; 

y desactivarlo!

Cuestiones relacionadas