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 的情况下提供。当您尝试加载受保护资源时,这将成为受保护资源和不安全的混合模式问题。
如果可能,您尝试以同样的方式提供参考文件
您可以在 SSL (https
)
中提供您的主页
您可以在http
中请求部分页面
$('#idtest').load("http://example.com/index.html")
或
- 正如您已经解决的,请求不带协议的部分页面。现在您加载的文件将使用您页面使用的协议加载。
关于您的特定资源:
我试过加载:
和
https://example.com/index.html
结果是一样的。我得到了一个带有消息的简单页面:
示例域
建立此域是为了用于文档中的说明性示例。您可以在示例中使用此域,无需事先协调或请求许可。
我觉得更多是跨源域的问题。
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
我有这个问题。在外部网站上,我有一个这样的脚本:
<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 的情况下提供。当您尝试加载受保护资源时,这将成为受保护资源和不安全的混合模式问题。
如果可能,您尝试以同样的方式提供参考文件
您可以在 SSL (
https
) 中提供您的主页
您可以在
中请求部分页面http
$('#idtest').load("http://example.com/index.html")
或
- 正如您已经解决的,请求不带协议的部分页面。现在您加载的文件将使用您页面使用的协议加载。
关于您的特定资源:
我试过加载:
和
https://example.com/index.html
结果是一样的。我得到了一个带有消息的简单页面:
示例域
建立此域是为了用于文档中的说明性示例。您可以在示例中使用此域,无需事先协调或请求许可。
我觉得更多是跨源域的问题。
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