javascript - prolongada - Error de Jenkins: ejecución de script bloqueada en<URL>. porque el marco del documento está protegido y el permiso ''permitir guiones'' no está establecido
errores de script en internet explorer 11 (6)
Debe seguir los siguientes pasos para la solución:
- Abra la página de inicio de Jenkin.
- Vaya a Administrar Jenkins.
- Ahora ve a la consola de script.
- Y en esa consola, pegue la siguiente declaración y haga clic en Ejecutar. System.setProperty ("hudson.model.DirectoryBrowserSupport.CSP", "")
- Después de eso cargará css y js.
Nota: Después de seguir los pasos anteriores si aún no está cargando CSS y JS, borre la memoria caché y la cookie del navegador y actualice la página.
Soy consciente de que si usamos un iFrame en HTML, tenemos que ponerlo en un sandbox y agregar el permiso ''allow-scripts'' para que sea cierto.
Pero mi problema es que no tengo un iFrame en absoluto en mi aplicación Angular JS pura. Cuando lo ejecuto en mi máquina local funciona bien.
En el momento en que lo implemento en mi servidor, Chrome muestra este mensaje de error junto con el siguiente error:
Se negó a cargar el estilo ''bootstrap.min.css'' porque viola la siguiente directiva de Política de Seguridad de Contenido: "style-src ''self''".
Se bloqueó la ejecución del script en ''dashboard.html'' porque el marco del documento está protegido y el permiso ''allow-scripts'' no está establecido.
No estoy invocando la página desde un sitio de terceros o en otro lugar que posiblemente pueda inyectar mi fuente y hacer que aparezca en un iframe. Inspeccioné el código y puedo confirmar que no hay iframes.
Por cierto, uso una versión muy antigua de Chrome (26) y Firefox (10) [Restricciones organizativas]. Esto sucede también en IE11 (aunque no se muestra ningún mensaje de error) la página no se carga.
¿Qué podría estar causando esto? ¿Me estoy perdiendo algo aquí? Cualquier puntero sería muy apreciado.
A continuación se muestra una instantánea de lo que estoy tratando de hacer ... Partes triviales recortadas ...
<html lang="en" ng-app="dashboard">
<head>
<title>Dashboard</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="js/angular.min.js"></script>
<script src="js/ui-bootstrap-tpls-0.6.0.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/notifications.js"></script>
<style>
body { background-color: #F3F3F4; color: #676a6c; font-size: 13px;}
</style>
<script>
var dashboardApp = angular.module(''dashboard'', [''ui.bootstrap'', ''notificationHelper'']);
Type = {
APP : 0, CTL : 1
}
function DashboardCtrl($scope, $location, $timeout, $http, $log, $q) {
$scope.environments = [ { ... }];
$scope.columns = [ { ... } ];
$scope.Type = window.Type;
$scope.applications = [{ ... }];
$scope.selectedEnv = null;
var resetModel = function(applications) {
applications.forEach(function(app) {
var hosts=$scope.findHosts(app, $scope.selectedEnv);
if(hosts){
hosts.forEach(function(host){
$scope.initStatus(app.status,host);
});
}
});
};
var timeoutPromise = null;
$scope.initStatus = function (status,host) {
status[host]=[{
...
}];
};
}
</script>
</head>
<body ng-controller="DashboardCtrl">
<div class="request-notifications" ng-notifications></div>
<div>
<tabset>
<tab ng-repeat="env in environments" heading="{{env.name}}" select="set(env)" active="env.tab_active">
<div class="col-md-6" ng-repeat="column in columns" ng-class="{''vertical-seperator'':$first}">
<div class="panel" ng-class="{''first-child'':$first}">
<div class="panel-heading">
<h3>{{column.column}}</h3>
</div>
<div class="panel-body">
<div class="frontends" ng-repeat="layer in column.layers">
<h4>{{layer.name}}</h4>
<div class="category" ng-repeat="category in layer.categories" ng-class="category.css">
<div class="category-heading">
<h4>{{category.name}}</h4>
</div>
<div class="category-body group" ng-repeat="group in category.groups">
<div ng-if="!env[group.host]">
<h4>{{group.name}}</h4>
<span class="label label-danger">Not deployed</span>
</div>
<div ng-repeat="host in env[group.host]">
<div class="group-info">
<div class="group-name">{{group.name}}</div>
<div class="group-node"><strong>Node : </strong>{{host}}</div>
</div>
<table class="table table-striped">
<thead>
<tr>
...
</tr>
</thead>
<tbody>
<tr class="testStatusPage" ng-repeat="app in apps | filter: { column: column.column, layer: layer.name, category: category.name, group: group.name } : true">
<!-- Application Home Links -->
<td class="user-link" ng-if="app.type === Type.A || app.type === Type.A1 || app.type === Type.B || app.type === Type.B1 || app.type === Type.C"><a href="{{app.link}}">{{app.text}}</a></td> <td ng-if="app.status[host].statusCode == 0" class="result statusResult"><span class="label label-success">Success</span></td>
<td ng-if="app.status[svr].status != null && app.status[host].status != 0" class="result statusResult"><span class="label label-danger">{{app.status[host].error}}</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</tab>
</tabset>
</div>
</body>
</html>
En Amazon Linux en la parte inferior de
/etc/sysconfig/jenkins
change:
#JENKINS_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=sandbox"
JENKINS_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=/"/""
Estábamos usando este contenido HTML en un directorio Jenkins userContent. Recientemente hemos actualizado a la última versión de Jenkins 1.625 LTS y parece que han introducido una nueva política de seguridad de contenido que agrega el encabezado a continuación a los encabezados de respuesta y los navegadores simplemente se niegan a ejecutar algo como hojas de estilo / Javascripts.
X-Content-Security-Policy: sandbox; default-src ''none''; img-src ''self''; style-src ''self'';
Para superarlo, tuvimos que eliminar este encabezado simplemente restableciendo la propiedad siguiente en Jenkins.
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
Aquellos que actualicen a Jenkins 1.625 y usen la carpeta userContent podrían verse afectados por este cambio.
Para obtener más información, consulte https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy
Las respuestas anteriores no me funcionaron en Ubuntu 16.04 con Jenkins 2.46.2. Tuve que cambiar JAVA_ARGS en / etc / default / jenkins como
JAVA_ARGS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true -Dhudson.model.DirectoryBrowserSupport.CSP=/"sandbox allow-scripts; style-src ''unsafe-inline'' *;script-src ''unsafe-inline'' *;/""
Más información here
Para Jenkins alojado en Ubuntu:
-
poner a
/etc/default/jenkins
JAVA_ARGS="${JAVA_ARGS} -Dhudson.model.DirectoryBrowserSupport.CSP=/"/" "
-
visite
http://<your jenkins hostname>/safeRestart
(sobre esta y otras opciones: https://wiki.jenkins.io/display/JENKINS/Features+controlled+by+system+properties )
UPD: esta vez, cuando hice esto, la visita / reinicio seguro no fue suficiente.
Tuve que hacer
sudo service jenkins restart
.
Tuve el mismo problema con HTML Publisher Plugin .
De acuerdo con la nueva Política de seguridad de contenido de Jenkins, puede omitirla configurando:
hudson.model.DirectoryBrowserSupport.CSP = script-src ''inseguro-en línea'';
ACTUALIZACIÓN:
Por alguna razón en Jenkins 2.x, tuve que actualizar los argumentos nuevamente, con un valor CSP vacío, en lugar de
script-src ''inseguro-en línea
, para mostrar completamente páginas HTML externas:
-Dhudson.model.DirectoryBrowserSupport.CSP =
En Windows hay un jenkins.xml en el directorio de inicio de Jenkins, donde puede establecer opciones globales de JVM, como las propiedades del sistema Jenkins. Simplemente agréguelo bajo la etiqueta de argumentos:
<arguments> -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle "-Dhudson.model.DirectoryBrowserSupport.CSP= " -jar "%BASE%/jenkins.war" --httpPort=8080 </arguments>
Para la mayoría de las distribuciones de Linux, puede modificar JENKINS_ARGS dentro del archivo:
/ etc / default / jenkins (o jenkins-oc)
Para CentOS, modifique JENKINS_JAVA_OPTIONS dentro del archivo:
/ etc / sysconfig / jenkins (o jenkins-oc)
Consulte más ejemplos en la Referencia de política de seguridad de contenido: http://content-security-policy.com/