Jquery 加载 https url

Jquery load https url

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

<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")

我收到此错误:混合内容:'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 中不起作用。我在调用 url :

时在 firefox 网络分析器中看到这种情况

302 https://example.com/index.html 200 http://example.com/index.html [混合内容]

这情况怎么理解(https转http)?可能是 Django 重定向问题?

A mixed content error 发生在:

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

或相反

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

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

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


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

  • 正如您已经解决的,请求不带协议的部分页面。现在您加载的文件将使用您页面使用的协议加载。

关于您的特定资源:

我试过加载:

http://example.com/index.html

https://example.com/index.html

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


示例域

建立此域是为了用于文档中的说明性示例。您可以在示例中使用此域,无需事先协调或请求许可。

More information...

我觉得更多是跨源域的问题。

jquery的$.load函数使用ajax加载url所以如果目标URL没有实现CORS就不能跨域调用headers.

在您的示例中,服务器 example.com 必须 return 一个 header

Access-Control-Allow-Origin: *

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

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

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

视图中: 错误:borrar_linea_factura_url(l)

还行:borrar_linea_factura_path(l)

如前所述:

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

“_path”助手生成 https://controller/action/params