Me encuentro con un comportamiento extraño e inconsistente. Escribo a continuación en w3c online tester .
prueba.htm
<!DOCTYPE html> <html> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <body> <iframe onload="$.getScript('https://mysite.tw/test.js')"> </body> </html> donde en test.js (en mi servidor), escribo:
alert('get!'); // this is just to confirm the js had indeed loaded window.location.href="https://amazon.com";Luego salta el mensaje de alerta, pero de repente el navegador bloquea el comportamiento de redirección, informando que el servidor rechaza el acceso.
Mi primera pregunta es ¿por qué sucede esto? Solo quiero dirigirme a otro sitio, no hacer algo complicado o delicado, como Ajax, etc.
Mi segunda pregunta es que probé el código similar de test.htm en otro sitio. Y esta vez la página redirigió con éxito a amazon. Bastante raro. ¿Es por el problema de https ? ¿O un problema de seguridad entre sitios?
Usted test.js está en iframe , y puede verificar el encabezado de respuesta de https://www.amazon.com/
x-frame-options: SAMEORIGIN
No puede iframe la página web de otro dominio.
El encabezado de respuesta HTTP X-Frame-Options se puede usar para indicar si un navegador debe permitir o no mostrar una página en un
<frame>,<iframe>,<embed>u<object>. Los sitios pueden usar esto para evitar ataques de secuestro de clics, asegurándose de que su contenido no esté incrustado en otros sitios.MISMO ORIGEN La página solo se puede mostrar en un marco en el mismo origen que la página misma.