Express 头盔 - CSS 未在 iOS Safari 上加载

Express Helmet - CSS not loading on iOS Safari

我刚刚将 Helmet 添加到我的 Node/Express/EJS 项目中,并且一直在配置我的 CSP 以启用内联脚本、样式和一些外部源。我在 Opera、Chrome 和 Edge 的 Windows 笔记本电脑上运行良好,现在我在 iOS Safari 移动设备上连接,似乎没有应用任何样式。我成功获得了 Bootstrap(当然是 JS,我认为 CSS 也是,虽然它不是 100% 清楚并且我在移动设备上没有控制台)但是我自己的样式表和脚本没有被正确加载。

这是我的代码:

app.use(
  helmet({
    contentSecurityPolicy: {
      directives: {
        scriptSrc: ["'self'", "'unsafe-inline'", "'unsafe-eval'", "*.googleapis.com", "*.jsdelivr.net", "*.jquery.com"],
        styleSrc: ["'self'", "'unsafe-inline'", "'unsafe-eval'", "*.googleapis.com", "*.jsdelivr.net", "*.jquery.com"],
        baseUri: ["'self'"],
        fontSrc: ["'self'", "https://fonts.gstatic.com"]
      }
    }
  })
)

我还注意到,每当我在 iOS Safari 上访问我网站上的 link 时,当我仅在本地主机服务器上使用 HTTP 时,它会自动强制使用 HTTPS。我感觉这可能是问题的原因 - 我的样式表被引用为

<link rel="stylesheet" href="/style.css" />

我认为 Safari 可能试图在 https://(laptop-private-ip):3000/style.css 处找到它,而实际上它应该搜索 http://(laptop-private-ip):3000/style.css。是否有可能它正在尝试 HTTPS link 这就是为什么我无法检索自己的样式但可以访问 Bootstrap 等的原因?

我该怎么办?非常感谢任何帮助 - 我在这上面浪费了很多时间。

问题已解决。我不是 100% 确定问题出在哪里,因为缓存似乎在起作用,但我相信它是以下原因之一。

  • Upgrade-Insecure-Requests
  • HSTS