¿Por qué si creo una cookie en www.example.com y la compruebo en example.com, la cookie no existe allí? Planeo simplemente usar .htaccess
redireccionar no www a un dominio www. ¿Pero cómo soluciono esto?Problema de cookies PHP - www o sin www
Respuesta
Los navegadores son los principales culpables aquí, no PHP. Almacenan por dominio, y no saben que www
es un caso especial; desde su perspectiva, www.mydomain.com
y mydomain.com
son cadenas diferentes, y por lo tanto tienen diferentes políticas de seguridad. Sin embargo, hay algo que puedes hacer.
Al configurar la cookie, use .mydomain.com
(con el punto inicial). Esto le indicará al navegador de su usuario que haga que la cookie esté accesible al mydomain.com
y a todos los subdominios, incluido www
. El setcookie de PHP tiene el argumento $domain
, pero es el quinto en la lista, por lo que puede necesitar establecer $expire
y $path
en sus valores predeterminados para poder acceder a él.
setcookie('name', 'value', time()+3600, '/', '.mydomain.com');
Por coherencia, sin embargo, es posible que desee considerar la posibilidad cambio de ruta todo el tráfico web a un dominio específico, es decir, enviar tráfico a mydomain.com
www.mydomain.com
, o viceversa. Mi vago conocimiento de SEO (editar si es incorrecto) me dice que es útil para no tener contenido duplicado, y te ahorra todos esos problemas de autenticación. Además, si almacena activos en un subdominio, tener cookies allí reduce la velocidad del tráfico al tener que transportarlo cada vez, por lo que almacenar las cookies de la aplicación solo en www
le da ese impulso de velocidad.
Here is a tutorial on how to accomplish such a redirect in Apache.
Estás cerca de las cosas de SEO. No importa si opta por hacerlo con o sin www; siempre y cuando elijas uno y te apegues a él. – NotMe
Editado para generalizar :) – Matchu
www. * No es un caso especial. Es una convención, pero no tiene un significado codificado en http/cookie RFC.Sería bastante absurdo que los navegadores administren mágicamente un tratamiento especial a www. De todos modos, +1. –
porque php traduce www.mydomain.com de manera diferente a midominio.com. Si los dominios no son 100% idénticos, la cookie no coincidirá.
Y estoy seguro de que el navegador también busca el 100% de coincidencia del nombre de dominio antes de permitir que los servidores los sobrescriban.
Simplemente use .htaccess para redirigir. Es la única forma SEGURA de abordar esto en todos los navegadores.
Prefijo del dominio con un punto soluciona el problema. La coincidencia exacta no es requerida. – TheJacobTaylor
"porque php traduce" ... No tiene nada que ver con php y todo que ver con los navegadores. Los navegadores no envían todas las cookies que tienen al sitio web. Solo eligen uno o más nombres de dominio coincidentes. – NotMe
Creo que se puede establecer la cookie en example.com (realmente .example.com) y se le enviará si se van a www.example.com, pero no viceversa. Esta política de seguridad estándar es evitar que los datos privados de los usuarios se envíen a servidores no deseados.
Personalmente, yo uso en mi VirtualHosts apache2.conf:
<VirtualHost *:80>
ServerName example.com
RedirectMatch (.*) http://www.example.com$1
</VirtualHost>
... en este ejemplo, todo el mundo tratando de cargar, por ejemplo, http://example.com/index.html se redirige a http://www.example.com/index.html.
setcookie("CookieName", "value", time()+3600, "/", ".mydomain.com");
- 1. ¿Cómo redirigir con "www" URL sin URL "www" o viceversa?
- 2. sesión diferente con url's con-www y sin-www
- 3. .htaccess redirigir tanto http: // con y sin www y https: // www a https: // www no
- 4. Redireccionar sin www a www con Node.js y expresar
- 5. sitios Www y no www
- 6. ¿Qué nombre canónico es mejor? www o no-www?
- 7. de redirección a https y no http www a www
- 8. .htaccess Redireccionar no WWW WWW preservar URI cadena
- 9. WWW o no WWW, ¿qué elegir como nombre principal del sitio?
- 10. obtener página web www appengine sin
- 11. Tumblr redirección de dominio personalizado - WWW para no WWW
- 12. Módulo de reescritura de Microsoft - Forzar www en la url O eliminar www de la url
- 13. Redirigir URL que no sea www a www usando .htaccess
- 14. .htaccess redirigir www a no www con SSL/HTTPS
- 15. Introduciendo mi aplicación Heroku Rails en www y sin www solo funciona durante una hora?
- 16. "URL con WWW y URL sin WWW": ¿hay alguna diferencia entre ellos?
- 17. Nodejs - .node_libraries/for www-data
- 18. mod_rewrite - añadir www
- 19. Python WWW macro
- 20. Wordpress .htaccess www. no forzando
- 21. PHP: Eliminar 'WWW' de la URL dentro de una Cadena
- 22. Permisos de archivos; ¿Mi contenido de la carpeta www debería ser propiedad de www-data?
- 23. ¿Hay un equivalente PHP de WWW :: Mechanize de Perl?
- 24. Ocultando archivos PHP fuera de WWW por seguridad
- 25. /var/www/estructura de carpetas para el proyecto PHP
- 26. Permisos para/var/www/html
- 27. ¿Cómo eliminar http: //, www y slash de URL en PHP?
- 28. diferencia entre http y www
- 29. cuestiones WWW :: Scripter con window.history
- 30. Nginx reescritura de dominio prefijado la no-www al dominio www-prefijo
Debe establecer el dominio de cookies explícitamente. O use algo como https://github.com/delight-im/PHP-Cookie, que maneja el caso "www" frente a "no-www" automáticamente. – caw