【问题标题】:Javascript in HTML not executing over SSL connectionHTML 中的 Javascript 未通过 SSL 连接执行
【发布时间】:2017-01-24 18:11:04
【问题描述】:

我通过 Jenkins https 使用无效的安全证书提供以下 HTML:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">alert(1);</script>
    <script type="text/javascript">alert(2);</script>
    <script type="text/javascript">alert(3);</script>
</head>
<body>
</body>
</html>

如果我在浏览器的页面上查看源代码,这就是我所看到的。但是,我没有收到警报。

如果我以本地文件file://.../index.html 的形式打开页面,我会看到弹出窗口。这发生在多个浏览器和多个客户端上。

如果我打开 javascript 控制台并输入 alert(1);,我没有收到警报,但我收到了 undefined,这意味着它运行了函数并且没有返回任何内容。

这是为什么?

【问题讨论】:

  • 对于控制台,它返回undefined,因为这是在 JavaScript 中没有明确指定返回值的函数返回的内容。所以当然alert() 会返回undefined,还有什么呢?
  • 对,但我没有收到警报,这就是我应该说的
  • 我刚刚在 Chrome 和 IE 中尝试过,对我来说似乎没问题 (imgur.com/a/iPKgk)。我想这可能与您的 PC 安全有关,例如 AV/防火墙

标签: javascript html ssl jenkins


【解决方案1】:

原来这是 Jenkins 的事情,在脚本控制台中运行它解决了我的问题:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';")

以下是有关“内容安全政策”标头的文档链接,它为我们指明了正确的方向:

https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2012-08-30
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多