捕获'阻止加载混合活动内容'CORS错误

时间:2013-12-12 21:16:24

标签: javascript jquery ajax firefox cors

在firefox中,当javascript尝试从http上托管的页面向https服务器发出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);;
}

但是buth xhr.responseTexte.message是空字符串(可能是因为$.ajax异步发生)。如何捕获实际的错误消息:阻止加载混合活动内容...

2 个答案:

答案 0 :(得分:3)

你无法捕捉到确切的信息。它只会记录到控制台,但不可供用户使用。

使用普通XHR时,.open()调用会抛出一个.result === 0x805e0006的异常。此外,ex.toString()将包含nsresult: "0x805e0006 (<unknown>)"

jQuery,将ex.toString()放入.statusText的{​​{1}},这样您就可以对因混合内容而被屏蔽的请求进行以下检查:

jqXHR

对于好奇:xhr.statusText.indexOf('nsresult: "0x805e0006 (<unknown>)"') > -1 应为NS_ERROR_CONTENT_BLOCKED(C ++宏值)。

答案 1 :(得分:0)

您应该能够通过使用协议相对URL来防止错误:

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

使用http或https,具体取决于您的网页上下文。 public.opencpu.org支持两者,所以没问题。