Jquery加载https url

时间:2015-06-05 09:57:03

标签: javascript jquery http https

我有这个问题。在外部网站上,我有一个这样的脚本:

<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重定向问题吗?

3 个答案:

答案 0 :(得分:12)

mixed content error在以下时间发生:

  • 您尝试在服务不安全(https)服务的网页上加载安全内容 SSL http

或相反的

  • 您尝试在安全投放的网页上加载不安全的内容(http SSL https)已投放

您的错误消息警告您的呼叫页面已在不安全模式下加载

您尚未明确说明这一点,但您的错误表明您的网页在没有 SSL 的情况下投放。当您尝试加载受保护资源时,这将成为受保护资源和不安全的混合模式问题。

如果可能,您尝试以相同的方式提供参考文件

  • 您可以在 SSL https

  • 中投放主页
  • 您可以在http

    中请求部分页面

    $( '#idtest')。负载( “http://example.com/index.html”)

  • 就像你已经解决了一样,请求没有协议的部分页面。现在,您的加载文件将使用您页面使用的协议加载。

关于您的特定资源:

我尝试加载:

http://example.com/index.html

https://example.com/index.html

结果是一样的。我有一个简单的页面,上面写着:

示例域

该域名被建立用于文档中的说明性示例。您可以在未经事先协调或要求许可的情况下在示例中使用此域名。

More information...

答案 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