首页 文章

捕获'Blocked loading mixed active content' CORS错误

提问于
浏览
7

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

Blocked loading mixed active content

我想 grab 这些错误,但我无法弄清楚如何 . 例如,我用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

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

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

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

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

    对于好奇: 0x805e0006 应该是NS_ERROR_CONTENT_BLOCKED(C宏值) .

  • 3

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

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

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

相关问题