Javascript HTTPS站点:通过HTTP加载外部CSS

Javascript HTTPS站点:通过HTTP加载外部CSS,javascript,https,Javascript,Https,我有一个安全的(HTTPS)web应用程序,它需要从不安全的(HTTP)来源(客户自己的网站)加载自定义样式表。这被现代浏览器阻止,但我需要一个解决方法,因为: 1) 我不能要求我的客户在HTTPS上托管他们的自定义样式表。他们没有专门知识,有些人有关于什么主机和区域可以承载东西的策略(讽刺的是,不是关于HTTPS)。 2) 显然,我不能要求最终用户禁用浏览器中的安全功能 我尝试过,使用@import-url(…)加载样式表,我尝试用src=“about:blank”创建一个iframe并从中加

我有一个安全的(HTTPS)web应用程序,它需要从不安全的(HTTP)来源(客户自己的网站)加载自定义样式表。这被现代浏览器阻止,但我需要一个解决方法,因为:

1) 我不能要求我的客户在HTTPS上托管他们的自定义样式表。他们没有专门知识,有些人有关于什么主机和区域可以承载东西的策略(讽刺的是,不是关于HTTPS)。 2) 显然,我不能要求最终用户禁用浏览器中的安全功能

我尝试过,使用
@import-url(…)加载样式表,我尝试用src=“about:blank”创建一个iframe并从中加载样式表,我尝试了XHR和fetch(但这需要在远程主机上启用CORS,这是我无法合理预期的)

除了创建一个可以在web上提供任何样式表的安全代理之外,我还缺少其他解决方法吗


任何让我的页面通过HTTP加载跨源样式表的魔法?

如果有一种解决方法可以在安全页面上加载不安全的资源,那么应该尽快对其进行修补。不,该策略的存在是因为在所有资源上没有HTTPS,您就没有真正的安全性。任何HTTP连接都可能被拦截,中间人处于中间,因此页面不安全。即使是像样式表这样的小东西也会破坏这种安全性


你必须通过HTTPS提供样式表,如果你的客户做不到,你就必须为他们提供样式表。

也许可以下载他们的CSS服务器端,并通过HTTPS提供给你自己的用户吗?

我试着用我构建的webapp做同样的事情。您想要做的真正问题是浏览器。它不允许安全连接被不安全连接破坏,特别是当您想在该页面上注入某些内容时。我使用了这种技术:

document.createElement("link") 
注射。由于浏览器安全性是一个大问题,我认为你不会发现黑客。。
祝你好运!:)

“如果有一种解决方法能够在安全页面上加载不安全的资源,那么应该尽快对其进行修补”,这是有道理的。但是,我们可以使用XHR显式加载不安全的资源,甚至跨域加载。该策略的存在(如果我理解正确的话)是为了通过使用可能成为MITM受害者的样式表/脚本标记来防止无意中加载不安全的资源。这是一项好政策。我见过ISP将JS注入页面以显示广告的情况。但策略应该设置安全默认值,但允许开发人员在特殊情况下覆盖这些内容。这就是我所说的变通方法。