【问题标题】:Why images and CSS do not show under HTTPS?为什么图像和 CSS 在 HTTPS 下不显示?
【发布时间】:2011-10-27 15:32:11
【问题描述】:

我刚刚向我的网站添加了 SSL。当我转到https://mydomain.com 时,我看到了文本,但没有 CSS 或图像。它位于专用服务器上,我可以完全控制代码。

当前所有路径都是相对的。无论是使用 HTTP 还是 HTTPS,当我直接访问这些文件时,我都可以查看图像和 css。但是当我加载一个页面时,他们没有加载......

当我使用 Firebug 并查看 NET 时,我看到每个图像 302 Found。这是什么意思?

我需要进行哪些更改才能确保 http 和 https 显示站点相似?

我是否将所有路径设为绝对路径?有没有办法让一个改变影响所有人,或者我实际上必须去改变每一个?

谢谢。

【问题讨论】:

    标签: ssl https


    【解决方案1】:

    你们有防盗链保护吗?如果您尝试禁用它。看看有没有帮助。

    【讨论】:

    • 你可以写(在你的 htaccess 中)这样的东西,而不是禁用它: RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?XXX.com
    • 什么是防盗链?
    【解决方案2】:

    您无需将所有内容都设为绝对,但您需要确保您的 CSS 和图像可通过 SSL 访问。尝试直接访问它们,或者使用 Firebug 或类似的浏览器工具来确定它试图从哪里加载它们。考虑使用“协议相对 URL”,以便始终使用与页面本身相同的协议(http 或 https)访问 CSS、图像等。 http://paulirish.com/2010/the-protocol-relative-url/

    【讨论】:

    • 我可以通过 HTTP 和 HTTPS 查看我的图像和 CSS,但显然它们没有加载。此外,当我转到我的 HTTPS 页面并在 FF 中查看源代码,然后单击 CSS 链接时,它会将我带到 HTTP ......但是如果我单击一个链接,而在 HTTPS 页面上,它会将另一个页面加载为 HTTPS。我有点困惑。
    【解决方案3】:

    如果您使用绝对链接(如http://www.yourcompany.net/yourcompany.css)指向您的 CSS,它将不会在 https 中显示 CSS。如果您将https://www.yourcompany.net/yourcompany.css 设为绝对值,它将在两个调用中都有效。

    【讨论】:

      【解决方案4】:

      我有同样的问题。如果页面是在 https 中打开的,那么 css/js 也应该在 https 中加载。我的意思是,要加载 css/js,它应该使用与打开 html/jsp/jsf 等页面相同的协议。所以解决方案是不要对 css/js 使用绝对 url。像这样使用相对网址:

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

      或者使用这个:

      <% String contextPath=request.getScheme()+"://"+request.getServerName()"+":"+request.getServerPort()+request.getContextPath();
      

      <link type="text/css" rel="stylesheet" href="<%=contextPath>/css/style.css" />

      这应该可以解决图像加载问题。

      【讨论】:

      • 您可以使用双斜杠表示绝对但使用相同的协议:例如“//css/myfile.css”。
      猜你喜欢
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2015-12-08
      相关资源
      最近更新 更多