即使我只使用 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.
- 我检查了页面源,每个 script/css 都是通过 https 请求的。
- 我什至使用代码检查器检查了动态创建的 html。
- 我禁用了 Javascript 以防脚本动态加载这些资产。
None 这些东西显示了单个 http:// 请求。我没有想法试图找出造成这种情况的原因。有什么想法或建议吗?
当看到关于 http://example.com/script.js
(非 https)URL 的混合内容消息实际上并未出现在您的来源中的任何地方时,要遵循的基本策略是:
- 将URL中的
http
替换为https
并将其输入浏览器的地址栏:https://example.com/script.js
- 如果您的浏览器从
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 路由)由于混合内容而被阻止。
首先,我检查了这三件事:
- 我检查了开发工具中的网络选项卡,它实际上是通过 https 加载的。
- 我直接用浏览器打开文件,是https。
- 我尝试以 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 进行更新。
在为多个资产切换到 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.
- 我检查了页面源,每个 script/css 都是通过 https 请求的。
- 我什至使用代码检查器检查了动态创建的 html。
- 我禁用了 Javascript 以防脚本动态加载这些资产。
None 这些东西显示了单个 http:// 请求。我没有想法试图找出造成这种情况的原因。有什么想法或建议吗?
当看到关于 http://example.com/script.js
(非 https)URL 的混合内容消息实际上并未出现在您的来源中的任何地方时,要遵循的基本策略是:
- 将URL中的
http
替换为https
并将其输入浏览器的地址栏:https://example.com/script.js
- 如果您的浏览器从
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 路由)由于混合内容而被阻止。
首先,我检查了这三件事:
- 我检查了开发工具中的网络选项卡,它实际上是通过 https 加载的。
- 我直接用浏览器打开文件,是https。
- 我尝试以 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 进行更新。