Estoy tratando de entender cómo usar CORS y estoy confundido acerca de lo que hace el Access-Control-Allow-Credentials
encabezado.
La documentación dice
Indica si la respuesta a la solicitud se puede exponer o no cuando el indicador de credenciales es verdadero.
Pero no entiendo lo que significa la respuesta "estar expuesto".
¿Alguien puede explicar qué hace realmente este encabezado configurado como verdadero (junto con el indicador de credenciales establecido como verdadero)?
http-headers
cors
Nate
fuente
fuente
Respuestas:
Por defecto, CORS no incluye cookies en solicitudes de origen cruzado. Esto es diferente de otras técnicas de origen cruzado como JSON-P. JSON-P siempre incluye cookies con la solicitud, y este comportamiento puede conducir a una clase de vulnerabilidades llamada falsificación de solicitud entre sitios , o CSRF.
Para reducir la posibilidad de vulnerabilidades CSRF en CORS, CORS requiere que tanto el servidor como el cliente reconozcan que está bien incluir cookies en las solicitudes. Hacer esto hace que las cookies sean una decisión activa, en lugar de algo que ocurre pasivamente sin ningún control.
El código de cliente debe establecer la
withCredentials
propiedad en laXMLHttpRequest
quetrue
con el fin de dar permiso.Sin embargo, este encabezado solo no es suficiente. El servidor debe responder con el
Access-Control-Allow-Credentials
encabezado. Responder con este encabezadotrue
significa que el servidor permite que se incluyan cookies (u otras credenciales de usuario) en las solicitudes de origen cruzado.También debe asegurarse de que su navegador no esté bloqueando las cookies de terceros si desea que funcionen las solicitudes con credenciales cruzadas.
Tenga en cuenta que independientemente de si realiza solicitudes del mismo origen o de origen cruzado, debe proteger su sitio de CSRF (especialmente si su solicitud incluye cookies).
fuente
withCredentials
está configurada, pero luego, cuando reciba la respuesta, si se estableció withCredentials, solo entregará / expondrá el resultado al javascript de llamada si la respuesta tiene el Acceso -Control-Allow-Credentials conjunto de encabezados. Si no hay encabezado, no expone la respuesta, de manera efectiva la oculta.