即使我只使用 https URL,也会出现混合内容错误

Getting mixed-content errors even though I’m only using https URLs

在为多个资产切换到 SSL 后,我的网站上到处都是 SSL 警告消息:

Mixed Content: The page at 'https://example.com' was loaded over HTTPS, but requested an insecure script 'http://example.com/script.js'. This request has been blocked; the content must be served over HTTPS.

None 这些东西显示了单个 http:// 请求。我没有想法试图找出造成这种情况的原因。有什么想法或建议吗?

当看到关于 http://example.com/script.js(非 https)URL 的混合内容消息实际上并未出现在您的来源中的任何地方时,要遵循的基本策略是:

  1. 将URL中的http替换为https并将其输入浏览器的地址栏:https://example.com/script.js
  2. 如果您的浏览器从 https://example.com/script.js URL 重定向回(非 https)http://example.com/script.js,那么您找到了原因:example.com/script.js 不是实际上可从 https URL 获得,并最终从 http URL 获得服务,即使您的来源请求 https URL。

关于这个问题我的 2 美分。

我在一个域上托管了一个运行完美的项目。

我需要让它国际化,所以我将主分支克隆到一个新分支,进行一些必要的文本更改并使用新分支的代码部署新站点(新域)。

一切正常,除了 1 个 ajax 调用(api 路由)由于混合内容而被阻止。

首先,我检查了这三件事:

  1. 我检查了开发工具中的网络选项卡,它实际上是通过 https 加载的。
  2. 我直接用浏览器打开文件,是https。
  3. 我尝试以 http:// 打开它,它会自动重定向到 https://

这很奇怪,因为这 2 个域都在使用 Cloudflare,并且它们的后端设置相同,代码相同(新的只有文本更改)但是对于新设置,有 1 个特定的控制台错误api 路由,所有其他路由(页面上大约 20 多个 ajax 请求)工作正常。他们甚至使用相同的函数来发出 Ajax 请求,所以这绝对不是配置错误。

经过一些调查,我发现了问题所在:

'buggy' 的通话在 / 结束。例如,所有其他调用都是针对:

https://example.com/api/posts
https://example.com/api/users

这个特别的人正在向

提出请求
https://example.com/api/todos/

末尾的斜杠导致混合内容问题失败。我不确定为什么这会导致问题以及它在原始站点上不是问题(因为相同的 ajax 调用工作正常),但它确实解决了我的问题。

如果我弄清楚 / 失败的原因,我会 post 进行更新。