Javascript Jquery加载https url

Javascript Jquery加载https url,javascript,jquery,http,https,Javascript,Jquery,Http,Https,我有这个问题。在外部网站中,我有这样一个脚本: <div id="idtest"></div> <script src="//example.com/widget.js" type="text/javascript"></script> 我收到以下错误:“页面”中的页面内容混合:该页面是通过HTTPS加载的,但请求的是不安全的XMLHttpRequest端点“”。此请求已被阻止;内容必须通过HTTPS提供 我不明白:为什么会出现错误,为什么端点在

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

<div id="idtest"></div>
<script src="//example.com/widget.js" type="text/javascript"></script>
我收到以下错误:“页面”中的页面内容混合:该页面是通过HTTPS加载的,但请求的是不安全的XMLHttpRequest端点“”。此请求已被阻止;内容必须通过HTTPS提供

我不明白:为什么会出现错误,为什么端点在“http”中? 谢谢

编辑

更多信息:

如果我在widget.js中这样做:

 $('#idtest').load("./index.html")
如果我在我的站点中加载脚本,那么内容是加载的,并且所有的工作都是完美的

如果我这样做:

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

我得到了错误(如果我将脚本放在我的站点或外部站点中)。为什么?

编辑2

更多信息:

我的网站在django

编辑3

在firefox中,我以https和http加载页面。它在Chrome中不起作用。在调用url时,我在firefox net analyzer中看到这种情况:

302 200[混合内容]

如何理解这种情况(https到http)?可能是Django重定向问题吗?

a发生在:

  • 您试图将安全内容SSL
    https
    )加载到不安全的服务页面(
    http
    )上
还是相反

  • 您试图将不安全的内容(
    http
    )加载到安全服务的页面上SSL
    https
您的错误消息警告您的呼叫页面已在不安全模式下加载

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


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

  • 您可以在SSL
    https
    )中提供主页服务

  • 您可以在
    http

    $('#idtest')。加载(“”)

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

关于您的特定资源:

我尝试加载:

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


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


我认为这更像是一个跨来源领域的问题

jquery的$.load函数使用ajax加载url,因此如果目标url未实现CORS头,则无法进行跨域调用

在您的示例中,server example.com必须返回一个头

Access-Control-Allow-Origin: *
您还可以将*替换为希望通过AJAX加载内容的页面域

一篇关于如何使用CORS的好博客文章:

我在Ruby on Rails网页上遇到了这个问题,错误是在https网页上使用了“\u url”帮助程序而不是“\u path”帮助程序:

视图中: 错误:
borrar\u linea\u factura\u url(l)

确定:
borrar\u linea\u factura\u路径(l)

回顾一下之前所说的:

“\u url”帮助程序生成
/controller/action/params


“_path”帮助程序生成
https://controller/action/params

很抱歉,您没有检查请求的整个页面是否使用https吗?你确定index.html上没有任何链接指向不安全的内容吗?是的,我确定在idex.html中没有http链接问题是我尝试将HTTPS(或外部站点需要的http)放入URL,但$.load()会继续使用http。可能是django重定向问题吗?@RoverDar,
httprequest
将使用与加载页面相同的协议。对于页面和所有依赖项,必须使用一个协议(
http
https
)。这解释了吗?这就是问题所在:我使用HTTPS加载页面,但httprequest似乎没有使用它(使用http)。我放了https:/mysite.com/example.com,但它没有work@RoverDar,我明白了。对不起,我不得不问,你有你的网站证书吗?是的,我有。它工作得很好。问题是当我从外部站点调用小部件并尝试加载index.html时。这肯定是一个CORS问题。标头应该可以解决这个问题。如果这是CORS问题,我希望请求总是失败。但当嵌套在JS文件中时,请求成功。服务器是否关心请求嵌套在何处?服务器不会只关心请求的域吗?@Julien Bachmann我在我的Django应用程序Django cors头中设置了,但结果是一样的。。。根据您的edit 3,$.load在http中工作,而不是在https(混合内容)中工作,看起来这实际上不是一个跨域问题,而是一个从https页面获取http ressource的问题。当您的服务器收到HTTPS请求时,它似乎会重定向到HTTP,这就是问题所在。您应该将服务器配置为支持https,而不是执行重定向。
 $('#idtest').load("https://example.com/index.html")
Access-Control-Allow-Origin: *