在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.responseText
和e.message
是空字符串(可能是因为$.ajax
异步发生)。如何捕获实际的错误消息:阻止加载混合活动内容...
答案 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支持两者,所以没问题。