Proporciono código de inserción a mis usuarios para poner un widget en su propio sitio web.
<div id="myDiv"></div> <script src="https://www.myserver.com/embed.php?id=sometoken"></script> <script>Widget.initWidget("myDiv",sometoken);</script>embed.php contiene el siguiente código javascript que inyecta un iframe en myDiv
window.Widget= window.Widget|| { initWidget: function(id,token) { iframe = document.createElement('iframe'); iframe.setAttribute('src', 'https://www.myserver.com/someother.php?id='&token); document.getElementById(id).appendChild(iframe); } }Todo ha estado funcionando bien hasta que le pedí a mi host VPS que habilitara la compresión gzip. Dicen que habilitaron gzip en html, javascript y css. Esto hizo que mis usuarios obtuvieran el siguiente error
"Cross-Origin Read Blocking (CORB) blocked cross-origin response https://www.myserver.com/embed.php?id=sometoken with MIME type text/html.
No entienden por qué, así que les pedí que deshagan el cambio. Lo hicieron, pero ahora el problema CORS todavía existe. Les pedí que agregaran "Access-Control-Allow-Origin: *" a los encabezados, lo cual hicieron, pero el problema persiste. No entiendo qué podrían haber hecho para causar el problema y por qué no pueden hacer que las cosas vuelvan a ser como eran cuando no había problemas de origen cruzado.
Estos son los encabezados completos que se están enviando:
Access-Control-Allow-Origin: * Connection: keep-alive Content-Type: text/html; charset=UTF-8 Date: Sat, 19 Feb 2022 04:28:25 GMT Server: nginx Transfer-Encoding: chunked X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=blockTengo el mismo script ejecutándose sin problemas en un host diferente y devuelve estos encabezados:
Access-Control-Allow-Origin: * Cache-Control: max-age=0 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 Date: Sat, 19 Feb 2022 03:23:54 GMT Expires: Sat, 19 Feb 2022 03:23:54 GMT Keep-Alive: timeout=3, max=99 Server: Apache Transfer-Encoding: chunked X-Content-Type-Options: nosniff X-UA-Compatible: IE=edge¿Alguna sugerencia sobre qué decirle a la empresa de hosting que cambie para que vuelva a funcionar?
El servidor dice que https://www.myserver.com/embed.php?id=sometoken es un documento HTML.
O:
Si está mintiendo, la razón más probable es que PHP afirmará que su salida es HTML de forma predeterminada , por lo que si desea escribir PHP que genera otra cosa, debe hacerlo explícitamente.
<?php header("Content-Type: text/javascript"); ?> function this_is_JS() { }