¿Por qué tendría que configurar CORS?
Para que la información sobre la ejecución o la atribución de un script aparezca en las entradas de rendimiento (y, por tanto, se capture en el perfil del navegador), el recurso (por ejemplo, un archivo JavaScript) debe obtenerse con encabezados CORS que permitan explícitamente que se comparta con el origen que realiza la medición (tu aplicación).
Resumiendo:
- Si un script se carga desde un mismo source (fuente) de origen, entonces se permite la atribución y puedes ver los datos de perfil atribuidos a este script.
- Si un script se carga a través del origen sin una política CORS permisiva (como
Access-Control-Allow-Origin
que permite el origen de la page (página) ), entonces se bloquea la atribución y no se ven los datos de perfil atribuidos a este script.
Esta política CORS garantiza que sólo los scripts explícitamente destinados a ser perfilados por otros orígenes puedan ser perfilados.
¿Qué relación hay entre CORS y la elaboración de perfiles de navegador?
Cuando se inicia el perfilador del navegador de Datadog (que utiliza la API de autoperfilado de JS), el perfilador puede capturar traces (trazas) de stack tecnológico de la ejecución de JavaScript, pero sólo incluye la atribución (nombres de funciones, URL, etc.) de los siguientes scripts:
- Scripts que tienen el mismo origen que la page (página) que inicia el perfilado
- Scripts cross-origin que optan explícitamente por el uso de CORS
Esto protege el contenido de terceros y a los usuarios de la filtración de detalles de ejecución a través de los límites de seguridad.
¿Por qué es necesario el atributo crossorigin=“anonymous”?
Sin el atributo crossorigin="anonymous"
, el navegador no realiza una solicitud activada por CORS para el script. El navegador obtiene el script sin CORS, es decir:
- No se aplica la política CORS.
- No se envían credenciales (cookies, autorizaciones HTTP, etc.).
- El script recuperado no cumple con los requisitos para una atribución detallada en entradas de rendimiento ni traces (trazas) de stack tecnológico. Estos marcos de stack tecnológico se muestran como “(anonymous)” o sin atribución.
Para proteger la privacidad de las secuencias de comandos de origen cruzado, ambas partes deben estar de acuerdo en compartir la información:
- la page (página) debe solicitar explícitamente una búsqueda habilitada para CORS, con
crossorigin="anonymous"
. - El servidor debe permitirlo, con un encabezado
Access-Control-Allow-Origin
en la respuesta.
Un script cumple los requisitos para la atribución en la API de autoperfilado JS sólo cuando se cumplen las dos condiciones anteriores.