这个问题与混合内容错误无关。即将推出一个网站。当我从http://example.com导航到https://example.com时,我注意到css/js/etc被重新下载,因为我使用的是根相对路径:。
使用http嗅探器,我发现浏览器认为https://www.example.com/_css/main.css与http://www.example.com/_css/main.css不同(事实并非如此)。因此,完全相同的内容会被下载两次,导致站点在从http导航到https时看起来很慢(如果用户没有同时缓存两个版本的话)。
有什么办法可以阻止这一切吗?用户几乎总是首先访问站点的非ssl版本,所以有没有一个脚本可以等到http内容加载后再强制将https版本放到用户缓存中?或者我应该只在每个页面和每个css背景图像上使用绝对路径(https://www.example.com/_css/main.css) (只有2个我使用精灵)。或者我们只是接受它?谢谢。
发布于 2011-09-02 00:12:39
使用http嗅探器的
我发现浏览器认为https://www.mysite.com/_css/main.css与http://www.mysite.com/_css/main.css不同(其实不然)。
它是一个具有相同内容的不同资源。浏览器无法知道它们将具有相同的内容。
您可以(使用301)从一个重定向到另一个,这样就没有非SSL版本。
有办法阻止这一切吗?
不怎么有意思。
https用户几乎总是首先访问站点的非
版本,所以有没有一个脚本可以等到http内容加载后再强制将https版本放到用户缓存中?
不是的。如果URL可以预先缓存任意其他URL的内容,这将是一个可怕的安全问题。
或者我应该在每个页面和每个
背景图像上使用绝对路径(https://www.mysite.com/_css/main.css) (只有2个我使用精灵)。
这是可行的,但会导致混合内容的问题。
还是我们只能接受它?
是。
发布于 2011-09-02 00:14:28
有几种方法可以解决这个问题。
当用户以Apache方式访问站点时,将所有内容<base href="https://example.com/" />
Redirect permanent / https://example.com/login
发布于 2011-09-02 00:12:49
您可以每次都使用https RewriteRule来加载https内容;或者在https版本中指定的重定向报头将工作得更慢(额外的往返),但我相信在其他方面也是一样的。
https://stackoverflow.com/questions/7273112
复制相似问题