Jenkins erreur Bloqué l'exécution du script dans <URL>. parce que le document est en bac à sable et la "autoriser les scripts' autorisation n'est pas définie
Je suis conscient que si l'on utilise une iFrame nous avons de sandbox, il & ajouter la "autoriser les scripts d' autorisation pour être vrai.
Mais mon problème est que je n'ai pas d'iFrame dans mon pur Angular JS application. Quand je le lance sur ma machine locale, il fonctionne très bien.
Le moment, je le déployer à mon serveur, Chrome affiche ce message d'erreur avec l'erreur ci-dessous:
Refusé de charger le style d'amorçage.min.css', car elle viole la
suivant le Contenu Politique de Sécurité de la directive: "le style-src" soi".Bloqué l'exécution du script dans
'dashboard.html'
parce que le document est en bac à sable et la "autoriser les scripts'
l'autorisation n'est pas définie.
Je ne suis pas l'invocation de la page à partir d'un 3ème partie du site ou ailleurs, ce qui pourrait éventuellement injecter ma source & de le faire apparaître dans une iframe. J'ai inspecté le code & je confirme, il n'y a pas les iframes à tous.
BTW, j'utilise une très vieille version de Chrome (26) et Firefox (10) [Organisation des restrictions]. Ce qui se passe sur IE11 (même Si aucun message d'erreur affiché) la page ne se charge pas en place.
Ce qui pourrait être la cause ? Ai-je raté quelque chose ici ? Tous les pointeurs serait grandement apprécié.
Ci-dessous est un aperçu de ce que je suis en train de faire... Trivial pièces parées de sortir..
<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>
Vous devez vous connecter pour publier un commentaire.
Nous avons été à l'aide de ce contenu HTML dans un Jenkins userContent répertoire. Nous avons récemment mis à niveau vers la dernière Jenkins 1.625 LTS version & il semble qu'ils ont introduit de nouveaux Contenus politique de sécurité qui ajoute ci-dessous l'en-tête de pour les en-têtes de réponse & les navigateurs, il suffit de refuser d'exécuter quoi que ce soit comme les feuilles de style /Javascripts.
Pour obtenir plus de cela, nous avons eu de tout simplement supprimer cet en-tête en réinitialisant le dessous de propriété dans Jenkins.
Ceux qui mise à niveau vers Jenkins 1.625 & utiliser le userContent dossier peuvent être affectés par ce changement.
Pour plus d'informations, reportez-vous https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Contenu+de Sécurité+de la Politique
J'ai eu le même problème avec HTML Publisher Plugin.
Selon Jenkins nouvelles Contenu De La Politique De Sécurité, vous pouvez l'ignorer en définissant:
Mise à JOUR:
Pour une raison Jenkins 2.x, j'ai eu à mettre à jour les arguments de nouveau, avec un vide CSP valeur, au lieu de
script src " dangereux-inline, afin de profiter pleinement de l'affichage externe des pages HTML:Sur Windows il y a un jenkins.xml dans Jenkins répertoire d'accueil, où vous pouvez définir globale des options JVM, tels que Jenkins propriétés du système. Il suffit de l'ajouter dans les arguments de la balise:
<arguments>
-Xrs -Xmx256m
-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle
"-Dhudson.model.DirectoryBrowserSupport.CSP= "
-jar "%BASE%\jenkins.war" --httpPort=8080
</arguments>
Pour la plupart des distributions Linux, vous pouvez modifier JENKINS_ARGS à l'intérieur du fichier:
/etc/default/jenkins (ou jenkins-oc)
Pour CentOS, modifier JENKINS_JAVA_OPTIONS à l'intérieur du fichier:
/etc/sysconfig/jenkins (ou jenkins-oc)
Voir plus d'exemples dans le Contenu de la Politique de Sécurité de Référence:
http://content-security-policy.com/
Vous devez suivre les étapes ci-dessous pour solution :
Système.setProperty("hudson.de modèle.DirectoryBrowserSupport.CSP", "")
Remarque : Après avoir suivi les étapes ci-dessus si ce n'est pas encore le chargement des css et js, puis d'effacer le cache du navigateur et les cookies et actualisez la page.
Jenkins pour hébergés sur Ubuntu:
mettre à
/etc/default/jenkins
visite
http://<your jenkins hostname>/safeRestart
(à ce sujet et d'autres options: https://wiki.jenkins.io/display/JENKINS/Features+contrôlé+par+les+propriétés)
UPD: cette fois, quand j'ai fait cette visite /safeRestart n'était pas assez. J'ai eu à faire
sudo service jenkins restart
.Les réponses ci-dessus n'a pas fonctionné pour moi sous Ubuntu 16.04 avec Jenkins 2.46.2. J'ai dû changer JAVA_ARGS dans /etc/default/jenkins comme
Plus d'infos ici
Sur Amazon Linux au bas de
/etc/sysconfig/jenkins
changement: