La recomendación CORS del W3C dice:
Ciertos tipos de recursos no deben intentar especificar determinados orígenes autorizados, sino que denegar o permitir Todos los orígenes.
...
3. Una respuesta GET cuyo cuerpo de entidad pasa a analizar como ECMAScript puede devolver un encabezado Access-Control-Allow-Origin cuyo valor es "*" siempre que no haya comentarios confidenciales ya que se puede acceder a él de origen cruzado usando un script HTML elemento. Si es necesario, tales recursos pueden implementar acceso control y protecciones CSRF como se describe anteriormente.
¿Se analiza JSON como ECMAScript?
¿Puede JSON producir efectos secundarios cuando se ejecuta a través de un elemento de script HTML?
¿Puede el contenido web de origen cruzado obtener acceso de lectura a las respuestas JSON GET de las solicitudes CSRF forjadas a través de un elemento de script HTML?
¿Qué significa "comentarios confidenciales" en este contexto?
¿Este párrafo se aplica a las solicitudes GET que no aceptan cookies o autenticación HTTP para autorización? Si una solicitud fuera autorizada de otra manera solo por OAuth, por ejemplo, su respuesta no sería accesible a un navegador a través de un elemento de script HTML. Pero al hacer que su respuesta incluya Access-Control-Allow-Origin: *
para todas las solicitudes autorizadas, el servidor perderá la capacidad de especificar los orígenes a los que el navegador otorgaría acceso.
¿La inclusión de Access-Control-Allow-Origin: *
no debilitaría la seguridad de las respuestas a las solicitudes autorizadas por las cookies o la autenticación HTTP? Si una solicitud fuera autorizada por una cookie, por ejemplo, sería ejecutable por el navegador, pero el código fuente en el cuerpo de la respuesta no sería accesible al contenido web de origen cruzado. Al hacer que su respuesta incluya Access-Control-Allow-Origin: *
, el servidor comunicaría al navegador que el contenido web desde todos los orígenes debería tener acceso para leer la respuesta además de ejecutarla.