Execução de script bloqueado em . porque o quadro do documento está em área restrita e a permissão ‘allow-scripts’ não está definida

Estou ciente de que, se usarmos um iFrame em HTML, faremos o sandbox dele e adicionaremos a permissão “allow-scripts” para ser verdadeira.

Mas meu problema é que eu não tenho um iFrame no meu aplicativo Angular JS puro. Quando eu o executo na minha máquina local, tudo funciona bem.

No momento em que implantei no meu servidor, o Chrome exibe essa mensagem de erro junto com o erro abaixo:

Recusou-se a carregar o estilo ‘bootstrap.min.css’ porque viola a seguinte diretiva da Diretiva de Segurança de Conteúdo: “style-src ‘self'”.

Execução de script bloqueado em ‘dashboard.html’ porque o quadro do documento está em área restrita e a permissão ‘allow-scripts’ não está configurada.

Não estou invocando a página de um site de terceiros ou de outro lugar que possa injetar minha fonte e fazer com que apareça em um iframe. Eu inspecionei o código e posso confirmar que não há iframes.

BTW, eu uso uma versão muito antiga do Chrome (26) e Firefox (10) [restrições organizacionais]. Isso também acontece no IE11 (embora nenhuma mensagem de erro seja exibida), a página não é carregada.

O que poderia estar causando isso ? Estou faltando alguma coisa aqui? Quaisquer pointers seriam muito apreciados.

Abaixo está um instantâneo do que eu estou tentando fazer … Peças triviais aparadas ..

  Dashboard        body { background-color: #F3F3F4; color: #676a6c; font-size: 13px;}   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]=[{ ... }]; }; }    

{{column.column}}

{{layer.name}}

{{category.name}}

{{group.name}}

Not deployed
{{group.name}}
Node : {{host}}
...
Success {{app.status[host].error}}

Estávamos usando esse conteúdo HTML em um diretório do Jenkins userContent. Recentemente, atualizamos para a versão mais recente do Jenkins 1.625 LTS e parece que eles introduziram a nova política de segurança Content que adiciona o header abaixo aos headers de resposta e os navegadores simplesmente se recusam a executar qualquer coisa como stylesheets / Javascripts.

 X-Content-Security-Policy: sandbox; default-src 'none'; img-src 'self'; style-src 'self'; 

Para superar isso, tivemos que simplesmente remover esse header, redefinindo a propriedade abaixo em Jenkins.

 System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "") 

Aqueles que atualizarem para o Jenkins 1.625 e usarem a pasta userContent podem ser afetados por essa mudança.

Para mais informações, consulte https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy

Eu tive o mesmo problema com o HTML Publisher Plugin .

De acordo com a nova Política de segurança de conteúdo do Jenkins, você pode ignorá-la definindo:

hudson.model.DirectoryBrowserSupport.CSP = script-src ‘inseguro em linha’;

No Windows, há um jenkins.xml no diretório inicial do Jenkins, no qual é possível definir opções globais da JVM, como as propriedades do sistema Jenkins. Basta adicioná-lo na tag arguments:

-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle "-Dhudson.model.DirectoryBrowserSupport.CSP= script-src ‘inseguro-in-line’; " -jar "%BASE%\jenkins.war" --httpPort=8080

Para a maioria das distribuições Linux, você pode modificar o arquivo JENKINS_ARGS dentro:

/ etc / default / jenkins (ou jenkins-oc)

Para o CentOS, modifique o JENKINS_JAVA_OPTIONS dentro do arquivo:

/ etc / sysconfig / jenkins (ou jenkins-oc)

Também dê uma olhada nos exemplos de Segurança de Conteúdo em: http://content-security-policy.com/

Da mesma maneira, eu esperaria que ele fosse configurável na interface do usuário do Jenkins> Gerenciar o Jenkins> Configurar o sistema> MAVEN_OPTS global Mas, no meu caso, apenas a modificação do XML do serviço jenkins funcionava.

ATUALIZAÇÃO: Por algum motivo no Jenkins 2.x, tive que atualizar os argumentos novamente, com um valor CSP vazio , para exibir totalmente as páginas HTML externas:

 -Dhudson.model.DirectoryBrowserSupport.CSP= 

Para Jenkins hospedado no Ubuntu:

  1. colocar em /etc/default/jenkins

     JAVA_ARGS="${JAVA_ARGS} -Dhudson.model.DirectoryBrowserSupport.CSP=\"\" " 
  2. visite http:///safeRestart

Você precisa seguir as etapas abaixo para solução:

  1. Abra a home page do Jenkin.
  2. Vá para Gerenciar Jenkins.
  3. Agora vá para o console de script.
  4. E nesse console, cole abaixo da instrução e clique em Executar. System.setProperty (“hudson.model.DirectoryBrowserSupport.CSP”, “”)
  5. Depois disso, irá carregar o css e o js.

Nota: Depois de seguir a etapa acima, se ainda não estiver carregando css e js, limpe o cookie e o cookie do navegador e atualize a página.

As respostas acima não funcionaram para mim no Ubuntu 16.04 com o Jenkins 2.46.2. Eu tive que mudar o JAVA_ARGS em / 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' *;\"" 

Mais informação aqui

No Amazon Linux na parte inferior do /etc/sysconfig/jenkins altere:

 #JENKINS_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=sandbox" JENKINS_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"\""