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
)服务的页面上加载安全内容SSL (https
)
或者相反
- 您尝试在安全SSL (
https
)服务的页面上加载不安全的内容(http
)
您的错误消息警告您的呼叫页面已在不安全模式下加载
您尚未明确说明这一点,但您的错误表明您的网页没有使用SSL 。 当您尝试加载受保护资源时,这将成为受保护资源和不安全的混合模式问题。
如果可能,您尝试以相同的方式提供参考文件
-
您可以使用SSL (
https
)为主页提供服务 -
您可以在
http
请求部分页面$(’#idtest’)。load(“ 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