我有这个问题。在外部网站上,我有一个这样的脚本:
<div id="idtest"></div>
<script src="//example.com/widget.js" type="text/javascript"></script>
example.com位于https(允许http和https)。在脚本widget.js中的服务器中,我有:
$('#idtest').load("https://example.com/index.html")
我收到此错误:混合内容:页面位于&#39;页面&#39;是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点&#39; http://example.com/index.html&#39;。此请求已被阻止;内容必须通过HTTPS提供。
我不明白:为什么错误以及端点在&#34; http&#34;? 感谢
修改
更多信息:
如果在widget.js中我这样做:
$('#idtest').load("./index.html")
内容已加载,如果我在我的网站中加载脚本,则所有内容都能正常运行。
如果我这样做:
x = "https://example.com"
$('#idtest').load(x + "/index.html")
或
$('#idtest').load("https://example.com/index.html")
我收到错误(如果我将脚本放在我的网站或外部网站中)。为什么呢?
编辑2
更多信息:
我的网站位于django
编辑3
在firefox中,我用https和http加载页面。它在Chrome中无效。我在firefox网络分析器中看到这种情况时调用url:
302 https://example.com/index.html 200 http://example.com/index.html [混合内容]
了解这种情况(https到http)?可能是Django重定向问题吗?
答案 0 :(得分:12)
mixed content error在以下时间发生:
https
)服务的网页上加载安全内容 SSL (http
)或相反的
http
) SSL (https
)已投放您的错误消息警告您的呼叫页面已在不安全模式下加载
您尚未明确说明这一点,但您的错误表明您的网页在没有 SSL 的情况下投放。当您尝试加载受保护资源时,这将成为受保护资源和不安全的混合模式问题。
如果可能,您尝试以相同的方式提供参考文件
您可以在 SSL (https
)
您可以在http
$( '#idtest')。负载( “http://example.com/index.html”)
或
关于您的特定资源:
我尝试加载:
和
https://example.com/index.html
结果是一样的。我有一个简单的页面,上面写着:
该域名被建立用于文档中的说明性示例。您可以在未经事先协调或要求许可的情况下在示例中使用此域名。
答案 1 :(得分:1)
我认为这更像是跨域域的问题。
jquery的$ .load函数使用ajax加载url,因此如果目标URL没有实现CORS头,则无法进行跨域调用。
在您的示例中,服务器example.com必须返回标题
Access-Control-Allow-Origin: *
您还可以将*替换为想要通过AJAX加载内容的网页域。
关于如何使用CORS的好博文: http://www.html5rocks.com/en/tutorials/cors/
答案 2 :(得分:0)
我在Ruby on Rails网页上遇到过这个问题,错误就是使用&#34; _url&#34;助手代替&#34; _path&#34;帮助者,在https网页上:
视图中的:
错误:borrar_linea_factura_url(l)
好的:borrar_linea_factura_path(l)
作为前述的回顾:
&#34; _url&#34;助手生成/controller/action/params
&#34; _path&#34;助手生成https://controller/action/params