Jquery加载https url

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

example.com位于https(允许http和https)。 在脚本widget.js中的服务器中,我有:

  $('#idtest').load("https://example.com/index.html") 

我收到此错误:混合内容:’thepage’页面是通过HTTPS加载的,但是请求了一个不安全的XMLHttpRequest端点’ http://example.com/index.html ‘。 此请求已被阻止; 内容必须通过HTTPS提供。

我不明白:为什么错误和端点为什么在“http”? 谢谢

编辑

更多信息:

如果在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重定向问题?

发生混合内容错误时:

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

或者相反

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

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

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


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

  • 您可以使用SSLhttps )为主页提供服务

  • 您可以在http请求部分页面

    $(’#idtest’)。load(“ http://example.com/index.html ”)

要么

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

关于您的特定资源:

我试过加载:

http://example.com/index.html

https://example.com/index.html

结果是一样的。 我有一个带有消息的简单页面:


示例域

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

更多信息…

我认为这更像是跨域域的问题。

jquery的$ .load函数使用ajax加载url,因此如果目标URL没有实现CORS头,则不能进行跨域调用。

在您的示例中,服务器example.com必须返回标头

 Access-Control-Allow-Origin: * 

您还可以将*替换为要通过AJAX加载内容的页面的域。

关于如何使用CORS的好博文: http ://www.html5rocks.com/en/tutorials/cors/

我在Ruby on Rails网页上遇到了这个问题,错误是在https网页上使用“_url”helper而不是“_path”helper:

视图中 :错误: borrar_linea_factura_url(l)

好的: borrar_linea_factura_path(l)

作为之前的回顾:

“_url”助手生成/controller/action/params

“_path”helper生成https://controller/action/params