Si inyecto un script programáticamente como este:
((global, url) => { let s = document.createElement('script') s.src = url global.document.body.appendChild(s) })(window, 'https://example.com')La solicitud se realizará correctamente y el script se insertará con la respuesta a la solicitud a "https://example.com"... pero si intento realizar una solicitud de recuperación explícita a la misma URL, obtengo un CORS ¿error? ¿Por qué está pasando eso?
Acabas de inventar JSONP :D Descripción de w3school :
JSONP significa JSON con relleno. Solicitar un archivo de otro dominio puede causar problemas debido a la política entre dominios. Solicitar un script externo de otro dominio no tiene este problema. JSONP usa esta ventaja y solicita archivos usando la etiqueta de secuencia de comandos en lugar del objeto XMLHttpRequest.
Aquí hay una explicación sobre stackoverflow