I. Introducción
Este blog para hablar de Web
aplicaciones ampliamente utilizados Cookie
, Session
así como Token
los mecanismos, que Web
desempeñan un papel vital en la aplicación, sino también los sitios de prueba de alta frecuencia en la entrevista. Este blog les presento principalmente los conceptos y principios de estas tres cosas se aplican, y las diferencias entre ellos.
En segundo lugar, el texto
2.1 ¿Por qué se necesitan
Ante todo, la primera pregunta, ¿por qué necesitamos estas tres cosas? Demasiado poco entendimiento HTTP
debe ser consciente de que HTTP
el protocolo es un protocolo sin estado. Lo que no tiene estado? Es decir, HTTP
el servidor para cada solicitud por igual, no registrar el estado de cada solicitud, como que se emite, todas las solicitudes es ajeno a ella. Incluso si envía dos solicitudes sucesivas al mismo servidor, es, y esto es dos solicitudes que no tienen relación. Sin embargo, nos encontraremos un fenómeno tal, cuando nos registramos en un sitio web, el servidor parecía saber, nosotros enviamos una petición, podemos obtener una respuesta asociada con la nuestra. Por ejemplo, hemos Taobao Después de inicio de sesión, haga clic en el carrito de la compra, será capaz de ver nuestros propios productos agregados; y si no firmamos adentro, estarán cortadas, saltar a la página de inicio de sesión. ¿Por qué es esto? No quiere decir HTTP
no tiene estado ella. De hecho, esto depende de tres mecanismos anteriores.
2.2 Cookies
Cookie
De hecho, algunos de los datos de texto almacenados en el navegador del ordenador, que es key-value
la forma, que contiene alguna información de nuestra cuenta, así como servidores. El hecho de enviar una solicitud a un servidor, el servidor puede querer que almacenemos algunos datos a nivel local, esta vez juntos, será en la cabecera de un nombre de paquete de respuesta es Set-Cookie
(o Set-Cookie2
, dependiendo de la versión) línea de cabecera, seguido por la navegación esperanza se almacena en los datos locales. Navegador recibe el paquete de respuesta, en el que se encuentran set-Cookie
los campos, los datos contenidos en él serán almacenados en el ordenador, sino también de grabación de direcciones del servidor. Que estos datos ¿para qué sirve? En nuestra próxima enviar una solicitud al servidor, tales Cookie
serán junto con el mensaje de solicitud al servidor, el servidor recibe los datos de Cookie
los datos, con el fin de ser capaz de identificar la solicitud de transmisión de corriente que es un cliente, o pueden ser identificados el cliente, con el fin de dar una respuesta correspondiente a la operación. Este proceso se muestra a continuación:
Dado que Cookie
se guarda en un archivo local, por lo que se puede almacenar durante largos períodos de tiempo solo necesita ajustar el tiempo de expiración más largo. También hay que señalar que, debido Cookie
a lo local, por lo que es en realidad un almacenamiento de datos no segura, lo que permite al navegador del cliente deshabilitado Cookie
. Además, la Cookie
capacidad de guardar el tamaño de datos también está limitado, solo cookie no puede exceder de los datos almacenados 4K
.
2.3 Sesión
Session
La traducción se llama: la sesión, lo que indica que se trata de un cliente y el servidor de conversación. Y Cookie
no es lo mismo, Session
son mantenidos por el servidor. Cuando un cliente envía una solicitud al servidor, se creará el servidor para iniciar el cliente de la solicitud de un objeto y se almacena en un conjunto de servidores, mientras que la generación de una única SessionId
para identificar el objeto, sino de la información del usuario actual se puede guardar en este objeto. Cuando el servidor envía un mensaje de respuesta para el usuario, será SessionId
colocado en el paquete de respuesta Set-Cookie
de cabeza, el usuario recibe el paquete de respuesta, cuando el detectado Set-Cookie
fila de encabezado, contenida en el mismo SessionId
se almacena localmente. La próxima vez que el cliente envía una solicitud al servidor, SessionId
desde la Cookie
lectura a, y se envía al servidor. Servidor detecta SessionId
después de un almacenamiento Session
de encontrar este objeto de colección SessionId
que corresponde al objeto, para obtener información sobre el usuario. Los usos más comunes es que los usuarios inician sesión en: Cuando un usuario inicia sesión en el servidor, Session
almacenar información de usuario, tales como la identidad userId
. Después de recibir la petición de un usuario, consulta Session
los objetos, cuando contengan userId
, indica que el usuario ha iniciado la sesión, y puede ser adquirido por el userId
usuario consulta de datos privada. El servidor no tiene que mantener Session
, que saldrá del usuario del navegador, o no después de recibir la petición del usuario, será por algún tiempo Session
para borrar.
Sin embargo, Session
hay algunos problemas, como para cada usuario, el servidor necesita para mantener uno o más Session
, si un gran número de usuarios para acceder al servidor a través del tiempo, hará que las necesidades de los servidores para mantener un gran número de Session
objetos, huella grave. Además, los actuales Web
servidores, han adoptado la tecnología de clúster, el clúster de cada servidor Session
es independiente, para lograr Session
la participación es una tarea más difícil. Por último, un punto más, el navegador puede ser desactivado Cookie
en este momento SessionId
no se almacenará en Cookie
, esta vez el navegador es la práctica general en la URL
puesta en SessionId
, así que antes de que el usuario no se cierra la página, esto SessionId
no se perderá.
2.4 de emergencia
Token
La función principal es hacer el usuario de autenticación , por lo general llamamos: Token. Cuando inicia sesión en un sitio Web, introduzca la contraseña de cuenta enviado al servidor. En este punto el servidor para consultar la base de datos para verificar la contraseña de la cuenta, si la autenticación tiene éxito, el servidor de acuerdo con algún algoritmo de cifrado especial para calcular una Token
(cadena de caracteres), lo envía al cliente, y la información de la identidad del usuario también se envía en el pasado, tales como userId
. Después de recibir la respuesta, se Token
almacena en Cookie
o memoria local, una solicitud de nuevo Token
, y userId
se envía al servidor. Cuando el servidor recibe una petición, de acuerdo con la información relevante del cliente, el nuevo cálculo Token
, si el nuevo Token
valor es enviado al cliente con Token
el mismo, antes de que el usuario ha sido validado indica, el servidor puede obtener los datos directamente.
Y no me siento Session
algo similar, pero en realidad la diferencia es bastante grande. informática de servidores Token
valores necesitan utilizar la información personal del usuario (como cliente mac地址
), y el mismo sólo se conoce servidor de claves, que garantiza también que Token
para cada cliente es único, y por única llave propia del servidor usted sabe, por lo que los piratas informáticos no pueden simular el servidor de cálculo de Token
valor, a continuación, enviar solicitudes falsas. Siempre y cuando el servidor detecta un error Token
, que no permitirá que la solicitud del cliente, sino que requiere el cliente para autenticar. Además, para cada solicitud, el servidor no tiene que como Session
el mismo, excepto la identidad del cliente, es necesario calcular la vez Token
puede ser comparado, es decir, que no rompe HTTP
la apatridia.
Sin embargo, esto también significa que Token
una vez que son interceptados por otros, por otro lado puede usar su identidad, hace una petición al servidor. Por lo tanto, Token
se basa generalmente en HTTPS
el uso, en lugar de en inseguro HTTP
para su uso. También se almacena en el proceso de encriptación locales se llevará a cabo en consecuencia.
La diferencia entre los tres 2.5
La diferencia entre (1) y Cookie de Sesión
- Seguridad:
Session
másCookie
seguridad,Session
se almacena en el servidor, puede ver sólo su propio servidorSession
de almacenamiento de datos, sino queCookie
está en la memoria del cliente, leer fácilmente de manera ilegal. - Los valores de los diferentes tipos de acceso :
Cookie
los datos almacenados en un archivo de texto, por lo que sólo permite que los datos cadena almacenada, quieren establecer otros tipos de datos necesarios para convertirlo en una cadena,Session
se pueden almacenar en cualquier tipo de datos, ya que se almacena en un servidor memoria, esencialmente un objeto. - Diferentes validez:
Cookie
se puede establecer por períodos largos, como a menudo utilizamos la función de inicio de sesión predeterminado,Session
el fracaso general de un corto período de tiempo, se cierra el cliente (por defecto) oSession
tiempo de espera se producirá un error. - Diferentes tamaños de almacenamiento: solo
Cookie
los datos guardados no pueden exceder4K
,Session
que pueden ser mucho más altos que los datos almacenadosCookie
, pero cuando el servidorSession
es demasiado grande, se tomarán demasiados recursos del servidor, haciendo que el servidor se ejecute lentamente.
(1) la diferencia entre la Sesión y Token
Session
Y Token
, de hecho, son esencialmente diferentes, que no se utilizan en la misma cosa. Session
El papel principal es el de almacén de sesión de información del cliente y el servidor, que es servidor necesita saber la información sobre el cliente solicitante actual, por lo que mantiene un depósito de la colección Session
de objetos que contiene la información del cliente. Sin embargo, Session
este mecanismo también puede ser utilizado para la verificación, siempre y cuando el servidor tiene un cliente actual Session
, y que contiene la información relevante, el servidor que los clientes actuales han sido verificados.
Sin embargo Token
, no se requiere el servidor para mantener el estado del cliente, su función es sólo para el cliente envía una solicitud al hacer la verificación, para evitar algunos ataques a la red. Sólo autenticado petición del cliente, el servidor le dará la respuesta, de lo contrario, será necesario verificarlo. Por otra parte, Token
la autenticación de seguridad que Session
. Los dos no están en conflicto, podemos utilizar el servidor Token
al cliente para su verificación, y luego usar el Session
Guardar información de sesión.
En tercer lugar, el resumen
En la cara Cookie
, Session
y de Token
hecho una introducción general, creo que después de la lectura, estas tres personas pueden tener un conocimiento general, pero quieren estudiar muy a fondo el mecanismo de principios y la aplicación, justo por encima del contenido es completamente no es suficiente, también tenemos que aprender la información más específica.