首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP to HTTPS (样式表、js、css-sprites等)重新加载

HTTP to HTTPS (样式表、js、css-sprites等)重新加载
EN

Stack Overflow用户
提问于 2011-09-02 00:06:00
回答 5查看 2.3K关注 0票数 5

这个问题与混合内容错误无关。即将推出一个网站。当我从http://example.com导航到https://example.com时,我注意到css/js/etc被重新下载,因为我使用的是根相对路径:。

使用http嗅探器,我发现浏览器认为https://www.example.com/_css/main.csshttp://www.example.com/_css/main.css不同(事实并非如此)。因此,完全相同的内容会被下载两次,导致站点在从http导航到https时看起来很慢(如果用户没有同时缓存两个版本的话)。

有什么办法可以阻止这一切吗?用户几乎总是首先访问站点的非ssl版本,所以有没有一个脚本可以等到http内容加载后再强制将https版本放到用户缓存中?或者我应该只在每个页面和每个css背景图像上使用绝对路径(https://www.example.com/_css/main.css) (只有2个我使用精灵)。或者我们只是接受它?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-02 00:12:39

使用http嗅探器的

我发现浏览器认为https://www.mysite.com/_css/main.csshttp://www.mysite.com/_css/main.css不同(其实不然)。

它是一个具有相同内容的不同资源。浏览器无法知道它们将具有相同的内容。

您可以(使用301)从一个重定向到另一个,这样就没有非SSL版本。

有办法阻止这一切吗?

不怎么有意思。

https用户几乎总是首先访问站点的非

版本,所以有没有一个脚本可以等到http内容加载后再强制将https版本放到用户缓存中?

不是的。如果URL可以预先缓存任意其他URL的内容,这将是一个可怕的安全问题。

或者我应该在每个页面和每个

背景图像上使用绝对路径(https://www.mysite.com/_css/main.css) (只有2个我使用精灵)。

这是可行的,但会导致混合内容的问题。

还是我们只能接受它?

是。

票数 4
EN

Stack Overflow用户

发布于 2011-09-02 00:14:28

有几种方法可以解决这个问题。

  1. 使用base tag。然后使用资源的相对路径,缓存将被认为适用于http和https,尽管它实际上已经加载到https上了。Demonstration

当用户以Apache方式访问站点时,将所有内容<base href="https://example.com/" />

  • Redirect到SSL (Redirect SSL)

Redirect permanent / https://example.com/login

票数 1
EN

Stack Overflow用户

发布于 2011-09-02 00:12:49

您可以每次都使用https RewriteRule来加载https内容;或者在https版本中指定的重定向报头将工作得更慢(额外的往返),但我相信在其他方面也是一样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7273112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档