javascript - pensiones - cuanto cobra un jubilado en alemania
Cómo prevenir una solicitud externa de JS (4)
Estoy usando un servicio que automáticamente construye y aloja páginas de inicio. En el cuerpo de su código, tienen una llamada a jQuery:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js?cache=2015-09-22-09">
Desafortunadamente, dado que estoy en China, googleapis.com está bloqueado y la página tiene que esperar a que se agote el tiempo de espera de este código antes de que se muestre. Esta parte se genera automáticamente como parte de la plantilla y no puedo cambiarla. Sin embargo puedo insertar javascript personalizado en la cabeza y el cuerpo.
¿Hay alguna forma en que pueda evitar que este código realice la solicitud a googleapis.com o que lo fuerce a cancelar después de que ya haya realizado la solicitud?
-EDITAR-
Aquí hay una tapa de pantalla de la pestaña de red cuando intento cargar la página. Como puede ver, la llamada a googleapis.com se bloquea durante 1,4 minutos hasta que se agote el tiempo, momento en el que se dispara DomContentLoaded y se carga toda la página.
Considere el uso de una política de seguridad de contenido . Sería un caso de uso inusual, pero con el CSP puede decirle al navegador que no está permitido acceder a googleapis.com incluso antes de que su gobierno tenga voz en el asunto. De esta manera, el navegador ni siquiera intentará cargarlo, y la página no se bloqueará.
Correcto, si puede poner html en el encabezado del documento, no solo ejecutar javascript puede usar una etiqueta meta para bloquear la carga de scripts externos:
<meta http-equiv="Content-Security-Policy" content="script-src ''self''">
De los documentos de metaetiqueta de políticas de seguridad de contenido de Mozilla :
Se recomienda encarecidamente a los autores que coloquen elementos meta tan pronto como sea posible en el documento, ya que las políticas en elementos meta no se aplican al contenido que los precede. En particular, tenga en cuenta que los recursos obtenidos o captados previamente mediante el campo Encabezado de respuesta HTTP, y los recursos recuperados o recuperados mediante el enlace y los elementos de secuencia de comandos que preceden a una política de entrega automática no se bloquearán.
Por lo tanto, la metaetiqueta solo funcionará en la cabeza, ciertamente antes de la secuencia de comandos que carga jQuery. Puede agregar URL a la lista blanca en la etiqueta agregándolas al parámetro de contenido en la etiqueta meta también.
Si solo puede ejecutar javascript, puede agregar la meta etiqueta dinámicamente. Desafortunadamente, es probable que el navegador haya decidido sus políticas cuando se agregue. Sin embargo, se puede añadir con
var meta = document.createElement(''meta'');
meta.httpEquiv = "Content-Security-Policy";
meta.content = "script-src ''self''";
document.getElementsByTagName(''head'')[0].appendChild(meta);
Más material de lectura interesante. Tarea para resolver el misterio de "Prevenir una solicitud js externa":
¿Usar JavaScript para evitar que una etiqueta `<script>` posterior sea evaluada?
¡Buena suerte!
Sí. La sugerencia de @Niet parece agradable. Para agregar a su respuesta, aquí está cómo puede bloquear la representación del dominio googleapi usando CSP:
Content-Security-Policy: script-src ''self'';
Este código indicaría al navegador que solo ejecute los scripts de SU propio dominio.
Si tiene acceso al servidor web y sus ventanas, ¿podría agregar una entrada en el archivo Hosts para redirigir la dirección de Google a la aplicación web del servidor local para descargar el javascript desde allí? (Si coincide con la estructura de carpetas del enlace javascript)
c:/windows/system32/drivers/etc/hosts
ajax.googleapis.com 127.0.0.1