不合逻辑的混合HTTP / HTTPS内容错误

时间:2017-03-07 01:30:46

标签: ssl mixed-content

我在切换到多个资产的SSL后,在我的网站上收到了SSL警告消息:

  

混合内容:' https://example.com'是通过HTTPS加载的,   但要求一个不安全的脚本' http://example.com/script.js'。这个   请求已被阻止;内容必须通过HTTPS提供。

  • 我检查了网页来源,通过https请求每个脚本/ css。
  • 我甚至使用代码检查器检查了动态创建的html。
  • 如果脚本动态加载这些资源,我禁用了Javascript。

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

2 个答案:

答案 0 :(得分:3)

当查看有关http://example.com/script.js(非https)网址的混合内容消息时,该网址实际上并未出现在您的来源的任何位置,请遵循以下基本策略:

  1. 将网址中的http替换为https,并将其放入浏览器的地址栏中:https://example.com/script.js
  2. 如果您的浏览器从https://example.com/script.js网址重定向回(非https)http://example.com/script.js,那么您就找到了原因:example.com/script.js实际上无法从{{{{}}获得1}}网址,即使您的来源正在请求https网址,也会从http网址获得投放。

答案 1 :(得分:0)

我对这个问题的 2 美分。

我在一个域上托管了一个项目,该项目可以完美运行。

我需要使其国际化,因此我将 master 分支克隆到一个新分支,进行一些必要的文本更改并使用来自新分支的代码部署新站点(新域)。

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

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

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

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

经过一番调查,我发现了问题:

“有问题”的呼叫以 / 结尾。例如,所有其他调用都用于:

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

这个特别的人正在向

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

最后的斜线使其因混合内容问题而失败。我不确定为什么这会导致问题,以及它在原始站点上如何不是问题(因为相同的 ajax 调用工作得很好),但它确实解决了我的问题。

如果我找出导致 / 如此惨败的原因,我会发布更新。