javascript - with - Cookies de extensión de Safari no reconocidas/aprobadas
xmlhttprequest javascript cors (4)
Recientemente he estado portando una extensión de Chrome a Safari, y encontré este tipo de error (error, característica, etc.)
Por lo tanto, en la página global tengo una solicitud XMLHTTP para una página segura que está disponible solo después de iniciar sesión.
Ejemplo:
- Simplemente inicie sesión utilizando el navegador, como suele hacer en Facebook u otras páginas seguras
- Después de eso, en la página global, cargo un xmlhttp disponible solo para inicio de sesión, y dice que no estoy conectado
Parece que la página global tiene sus propias cookies, por lo que una página segura cree que soy nuevo
ps: en Chrome puedo cargar esa página y piensa que estoy actuando en nombre del usuario que inició sesión, así que supongo que hay algunas restricciones en Safari
pps: escuché que hay una opción de Bloquear cookies de terceros en Safari, pero incluso si lo seleccioné para "Nunca bloquear" todavía no funciona
Desafortunadamente, el problema aún existe en la versión de safari 5.1.7 para Windows.
He encontrado una solución para pasar las credenciales de inicio de sesión (pares de nombre de usuario / contraseña) a la página global utilizando el paso de mensajes y la página global, usarlas para iniciar sesión de forma silenciosa.
Las cookies no deben ser "cookies de sesión", deben ser persistentes. Establecer fecha de caducidad.
Debe hacerse en el lado del servidor. En ejemplo, para Node.js / Express algo como esto:
var session = require(''cookie-session'');
…
var cookieExpires = new Date();
cookieExpires.setDate(cookieExpires.getDate() + 1); // Set 1 day cookie lifetime
…
app.use(
session({
…
name: ''session'',
expires: cookieExpires
}))
…
Las cookies pueden marcarse opcionalmente como HttpOnly o Secure. Si no los transmite, es probable que esté intentando acceder a un recurso HTTP en el mismo sitio desde la página de inicio de inicio de sesión HTTPS, por lo que el navegador no permitirá que la cookie segura se envíe por un enlace no seguro. Efectivamente, los sitios HTTP y HTTPS se tratan como separados.
O bien, debe asegurarse de que después de iniciar sesión, redirija el navegador a HTTP y establezca una cookie HttpOnly, o simplemente realice la Solicitud XMLHttp sobre HTTPS. Esto sería más seguro y en realidad no agregaría mucha sobrecarga al servidor (solía ser cuando el hardware era lento, pero Google dice que cuando Gmail pasó a usar HTTPS como predeterminado, no afectó la carga del servidor más de un par del por ciento).
Intente configurar todo el sitio para que se ejecute sobre HTTPS y vea si eso lo corrige. Además, use firebug y la extensión de firecookie para ver si las cookies tienen alguna de estas opciones habilitadas (dos columnas a la derecha).
Tuve ese problema con Safari 5.1.2 para Windows, pero después de actualizar a la versión actual (5.1.7), el problema desapareció. Tal vez lo arreglaron en alguna versión intermedia. También me está funcionando en un Safari 5.1.3 para Mac OS X.