在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(< unknown>)”.
jQuery,将ex.toString()放入jqXHR的.statusText中,因此您可以对由于混合内容而被阻止的请求进行以下检查:
xhr.statusText.indexOf('nsresult: "0x805e0006 (<unknown>)"') > -1
对于好奇:0x805e0006应为NS_ERROR_CONTENT_BLOCKED
(C宏值).