solicitudes razón prevuelo peticiones origin funcionó falta dominio domain cruzado cross correctamente control canal cabecera allow cors

peticiones - razón: el canal prevuelo cors no funcionó correctamente



Cómo aplicar la caché de comprobación previa de CORS a un dominio completo (3)

Intenta usar xDomain

Fue bastante simple para mí configurar si se usa angular o jQuery. En su servidor de aplicaciones, agregue un proxy.html como se indica en la ayuda en el siguiente enlace. Agregue algunas etiquetas referentes a los archivos js en su "cliente" y viola, no más pre-vuelos. Esto se envuelve en un iframe para evitar la necesidad de ver cors.

https://github.com/jpillora/xdomain

Estoy construyendo una aplicación REST que hace uso de CORS. Cada llamada REST es diferente y estoy descubriendo que hay una sobrecarga significativa para obtener la llamada de OPCIONES de verificación previa. ¿Hay alguna forma de almacenar en caché y aplicar un resultado de OPCIONES de verificación previa para que las siguientes llamadas al mismo dominio usen la respuesta en caché?


La verificación previa solo se puede aplicar a la solicitud, no a todo el dominio. Hice la misma pregunta en la lista de correo y hubo problemas de seguridad. Aquí está el hilo completo: http://lists.w3.org/Archives/Public/public-webapps/2012AprJun/0228.html

Hay algunas cosas a considerar si desea limitar el número de solicitudes de verificación previa. En primer lugar, tenga en cuenta que los navegadores basados ​​en WebKit / Blink establecen una caché de verificación previa máxima de 10 minutos:

https://github.com/WebKit/webkit/blob/master/Source/WebCore/loader/CrossOriginPreflightResultCache.cpp https://chromium.googlesource.com/chromium/blink/+/master/Source/core/loader/CrossOriginPreflightResultCache.cpp

(No estoy seguro de si esto es cierto para otros navegadores). Por lo tanto, aunque siempre debe establecer el encabezado Access-Control-Max-Age, el valor máximo es de 10 minutos.

A continuación, tenga en cuenta que es imposible evitar una verificación previa en las solicitudes PUT / DELETE. Así que las actualizaciones / eliminaciones a su API requerirán al menos una verificación previa cada 10 minutos.

En GET / POST, evite los encabezados personalizados si es posible, ya que estos aún activan las pre-luces. Si su API devuelve JSON, tenga en cuenta que un tipo de contenido de ''application / json'' también activa una comprobación previa.

Si está dispuesto a doblegar lo "RESTful" que es su API, hay algunas cosas más que puede probar. Una es usar un tipo de contenido que no necesita una verificación previa, como ''texto / normal''. Los encabezados personalizados siempre activan los reflectores, por lo que si tiene encabezados personalizados, puede moverlos a los parámetros de consulta. En el extremo, puede usar un protocolo como JSON-RPC, donde todas las solicitudes se realizan a un único punto final.

Honestamente, debido al límite de caché de verificación previa del navegador de 10 minutos, y las URL de recursos de REST, la caché de verificación previa es bastante inútil. Hay muy poco que puede hacer para limitar los reflectores en el transcurso de una aplicación de larga ejecución. Tengo la esperanza de que los autores de la especificación CORS intenten abordar esto en el futuro.


Una forma es que puede apuntar todas sus llamadas API al mismo dominio que su front-end. Configure nginx en el servidor de aplicaciones para el usuario para reenviar solo las llamadas API al servidor API. Esto eliminará todas las llamadas previas al vuelo.