Javascript HTTP到HTTPS(样式表、js、css精灵等)重新加载
这个问题与混合内容错误无关。即将启动一个站点。当我从导航到时,我注意到css/js/etc被重新下载,因为我使用的是根相对路径: 使用http嗅探器,我看到浏览器认为与(它不是)不同。因此,相同的内容被下载两次,导致站点从http导航到https时看起来很慢(如果用户没有缓存这两个版本)Javascript HTTP到HTTPS(样式表、js、css精灵等)重新加载,javascript,css,ssl,http-headers,Javascript,Css,Ssl,Http Headers,这个问题与混合内容错误无关。即将启动一个站点。当我从导航到时,我注意到css/js/etc被重新下载,因为我使用的是根相对路径: 使用http嗅探器,我看到浏览器认为与(它不是)不同。因此,相同的内容被下载两次,导致站点从http导航到https时看起来很慢(如果用户没有缓存这两个版本) 有没有办法阻止这一切?用户几乎总是首先访问站点的非ssl版本,因此是否有脚本会等到加载http内容后再强制将https版本加载到用户缓存中?还是应该使用绝对路径(https://www.example.com/
有没有办法阻止这一切?用户几乎总是首先访问站点的非ssl版本,因此是否有脚本会等到加载http内容后再强制将https版本加载到用户缓存中?还是应该使用绝对路径(https://www.example.com/_css/main.css)在任何页面和每个css背景图像上(我只使用2个精灵)。还是我们就这样生活?谢谢。您可以在不使用协议说明符的情况下引用文件,例如:
<link rel="stylesheet" type="text/css" href="//mysite.com/_css/main.css" />
有关更多详细信息,请参阅本文:
使用http嗅探器,我看到浏览器认为与(它不是)不同
它是具有相同内容的不同资源。浏览器无法知道它们将拥有相同的内容
您可以(使用301)从一个重定向到另一个,这样您就没有非SSL版本
有没有办法阻止这一切
不是真的
用户几乎总是首先访问站点的非ssl版本,因此是否有脚本会等到加载http内容后再强制将https版本加载到用户缓存中
不。如果一个URL可以为任意其他URL预先设置内容,这将是一个可怕的安全问题
还是应该使用绝对路径(https://www.mysite.com/_css/main.css)在任何页面和每个css背景图像上(我只使用2个精灵)
这会起作用,但会导致内容复杂的问题
还是我们就这样生活
是。您可以使用.htaccess重写规则每次加载https内容;或者,在html的http版本中指定的重定向头将工作得更慢(额外的往返),但我相信,在其他方面也一样
重定向永久/https://example.com/login
使用协议相对路径 而不是这个
<link rel="stylesheet" href="http://domain.com/style.css">
<link rel="stylesheet" href="https://domain.com/style.css">
用这个
<link rel="stylesheet" href="//domain.com/style.css">
然后它将使用父页面的协议。这些协议将解析为已使用的相同URI,因此不会改变任何内容。基本上,这已经发生了。浏览器只是认为https main.css不同于http main.css,所以从技术上讲,它是一个不同的资源,但内容是相同的…有点像sux。请使用和朋友作为例子。mysite.com是一家真正的托管公司,不需要指向它们的虚假链接,因为它们会出现404个错误。修复了…很抱歉,关于安全问题,我没有想到这一点。嗯,我想我会接受它,直到互联网之神想出一个替代方案。至于javascript解决方案,我认为大致如下:。在加载样式之前,javascript会覆盖默认功能……类似于这些内容。就像加载http main.css和页面的其余部分一样,然后触发加载https版本的js代码。强制ssl并不能解决此问题,它仍然会从非ssl版本重定向到ssl版本,给用户一个警告!实际上,强制SSL确实解决了这个问题。但真正的标签是他们正在寻找的。这将导致页面每次都从https://版本加载内容,无论其他内容是否安全。不知道您正在使用的浏览器,但您的警告是孤立的。