【问题标题】:redirecting http traffic to https with avoiding mixed content warnings将 http 流量重定向到 https,避免混合内容警告
【发布时间】:2018-12-19 12:36:33
【问题描述】:

我有一个最近安装了 SSL 证书的网站。 .htaccess 文件目前强制所有流量使用http,并且整个站点有许多硬编码链接,包括对cssjavascript 文件的引用。

仅更改.htaccess 文件以将所有流量重定向到https 是否安全?我猜这会给我混合内容警告,因为某些链接将通过http 而不是https 提供。

我想也许最好先将所有链接更改为src="//www.mysite.com",然后再更改.htaccess 文件。我很欣赏更新 httpd.conf 文件以包含 SSL 更改的更好做法,我只是不想破坏实时站点。

我还注意到,有时刷新页面时并不总是下载 cssjavascript 更改,但如果我查看页面源并单击它下载的源文件,并且该站点运行正常。显然我想在上线时避免这种情况。

什么是最好的前进方式?

【问题讨论】:

  • 由于您拥有 SSL 证书,请将所有 http 请求重定向到 https。您还应该明确并在整个应用程序中使用https://(在所有link hrefscript srcimg src 等......)。不鼓励使用相对协议(仅//),因为现在建议所有流量通过https
  • 不只是重定向到 https,还要考虑你的网址的 www 而不是 www 版本,以避免重复内容问题。

标签: php .htaccess ssl ssl-certificate


【解决方案1】:

仅将 .htaccess 更改为重定向到 https 并不能解决您的问题。浏览器可能仍会在您的 html 中看到 http 并产生混合内容警告。

您必须浏览您的模板并切换到相对链接,或切换到 // 或 https://

您的静态 css 和 js 文件没有立即更新的事实是因为浏览器缓存了此类文件。

在开发期间,您可以使用 ctrl+F5 硬刷新页面以从服务器获取新副本。

第一个解决方案是将 ?v=1 之类的内容附加到文件 url。这将在您每次更改版本时强制下载文件。 但请记住,旧浏览器可能根本不会缓存带有 GET 参数的文件。

超级安全的方法是在 url 的静态端设置版本。

喜欢 /js/assets.v1.js

手动执行这些选项中的任何一个可能很乏味,但它会很有效。

有一些工具可以在您每次构建资产时自动执行此操作,但您可能需要进一步修改模板才能使其正常工作。这真的取决于你使用的是什么。

【讨论】:

  • “对于正常使用来说,一个快速但不那么合适的解决方案是附加类似 ?v=1”的内容 - 以何种方式不合适?只要您不更改每个请求的查询字符串,它仍然会缓存它,直到查询字符串更改,您仅在更新它时才这样做(并强制重新加载所有缓存的 css/js,它们应该是)。
  • 带有get变量的文件不会被缓存
  • 是的,他们是。浏览器只是将其视为不同的文件名。您认为为什么许多大型图书馆在通过 CDN 提供文件时使用这种策略?
  • 这是基于 10 年前的一篇文章。这在今天几乎是一个反问题。除非你要支持 IE6-7 之类的,否则使用起来还是很安全的。
  • 但是很公平。不再是失眠了。感谢您向我们指出。我会更新我的答案
猜你喜欢
  • 1970-01-01
  • 2018-02-18
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 2015-05-07
  • 2021-02-14
相关资源
最近更新 更多