Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 捕捉';阻止加载混合活动内容';CORS误差_Javascript_Jquery_Ajax_Firefox_Cors - Fatal编程技术网

Javascript 捕捉';阻止加载混合活动内容';CORS误差

Javascript 捕捉';阻止加载混合活动内容';CORS误差,javascript,jquery,ajax,firefox,cors,Javascript,Jquery,Ajax,Firefox,Cors,在firefox中,当javascript试图从托管在https上的页面向http服务器发出CORS请求时,它将抛出一个错误: Blocked loading mixed active content 我想抓住这些错误,但我不知道怎么做。例如,我在jQuery中尝试了类似的方法: try { $.get("http://public.opencpu.org/ocpu/library/").fail(function(xhr, err){ console.log("Server e

在firefox中,当javascript试图从托管在
https
上的页面向
http
服务器发出CORS请求时,它将抛出一个错误:

Blocked loading mixed active content 
我想抓住这些错误,但我不知道怎么做。例如,我在jQuery中尝试了类似的方法:

try {
  $.get("http://public.opencpu.org/ocpu/library/").fail(function(xhr, err){
    console.log("Server error:" + xhr.responseText);
  });
} catch(e){
  console.log(e.message);;
}

但是,但是
xhr.responseText
e.message
是空字符串(可能是因为
$.ajax
是异步发生的)。我如何才能捕捉到实际的错误消息,即:阻止加载混合活动内容…

您无法捕捉到确切的消息。它将只记录到控制台,但用户不可用

使用普通XHR时,
.open()
调用将抛出一个异常,该异常具有
.result==0x805e0006
。另外,
ex.toString()
将包含
nsresult:“0x805e0006()”

jQuery将
ex.toString()
放入
jqXHR
.statusText
中,因此您可以对由于混合内容而被阻止的请求执行以下检查:

xhr.statusText.indexOf('nsresult: "0x805e0006 (<unknown>)"') > -1
xhr.statusText.indexOf('nsresult:“0x805e0006()”)>-1

出于好奇:
0x805e006
应该是(C++宏值)

首先,您应该能够通过使用协议相关URL来防止错误:

$.get("//public.opencpu.org/ocpu/library/")

根据页面上下文,使用http或https。public.opencpu.org两者都支持,因此没有问题。

我知道,但这不是问题所在。用户需要指定URL。@Jeroen,在您的问题中提及该URL会很有帮助。无论如何,给定任意URI,您如何确保URI a)首先支持和b)允许来自您的CORS请求?我不支持,但这被
fail
处理程序捕获。因此,您的意思是,$.ajax调用需要使用阻塞字段进行增强。我在jquery中找到了调用xhr.open的代码行。在chrome中,我没有得到一个例外。相反,异常记录在xhr.send()上,但xhr.statusText仍为空。