constant - rack cors ruby on rails
cómo forzar rack: session+sinatra para leer "rack.session" de params en lugar de cookies (1)
Estoy tratando con oauth 1.0 (twitter y flickr). El sitio web funciona en el puerto 80 y el servidor funciona en el puerto 8080
Algoritmo:
- envíe una solicitud ajax al servidor de oauth para verificar si el usuario tiene access_token válido
- abrir ventana de autorización si el usuario no tiene access_token o access_token ha caducado
- guarde access_token en la sesión del usuario en el servidor oauth
- enviar datos compartidos al servidor oauth
Utiliza sinatra + rack: session + rack :: session :: sequel + sqlite para almacenar sesiones. Envía Set-Cookie: rack.session=id
en cada respuesta
Estoy utilizando 2 tipos de solicitud: cross-domain ajax con jquery y solicitud habitual con window.open. Tengo un gran problema de seguridad al pasar las cookies a la solicitud ajax de dominios cruzados.
No importa que los encabezados de respuesta del servidor contengan
Access-Control-Allow-Headers: *
Chrome emitirá un error de seguridad:
Se negó a configurar el encabezado inseguro "Cookie"
Quiero evitar este problema pasando rack.session = id para publicar datos y cargarlos:
before "/twitter/connect.json" do
session = Rack::Session::something(params["rack.session"])
end
Pero no puedo encontrar en la documentación cómo hacer esto
Rack::Session::Abstract::ID
tiene una opción llamada cookie_only
que permite cookie_only
la identificación de la sesión a través de los parámetros . Sin embargo, su valor predeterminado es verdadero , y la mayoría de las implementaciones de middleware de sesión no se molestan en anularlo .
Su mejor apuesta es probablemente el parche de monos Rack::Session::Abstract::ID
a la cookie_only
predeterminada_ a falso.
Rack::Session::Abstract::ID::DEFAULT_OPTIONS.merge! :cookie_only => false