我正在开发一个firefox插件,如果状态代码是4xx或5xx错误,它会执行操作。 它现在运行得很好,但如果错误代码是408,它就不会采取行动。 Firefox给了我一个错误,但错误永远不会到达我的扩展名。
我的httpobserver看起来像这样:
observe: function(aSubject, aTopic, aData)
{
if (aTopic == 'http-on-examine-response')
{
httpstatus = aSubject.responseStatus.toString();
if(httpstatus.substr(0,1) in {4:1,5:1})
{
...
我还尝试在设置httpstatus之后设置一个警告框(在if之前)它会警告除了408错误之外的所有代码。
有人知道怎么做吗?提前谢谢!
答案 0 :(得分:2)
你的意思很可能不是“408 Timed Out”HTTP响应(如果代理服务器无法到达服务器就会发生)但NS_ERROR_NET_TIMEOUT
- 如果Gecko无法到达服务器则会产生错误。仅当收到来自服务器的响应时才会触发http-on-examine-response
通知,对于NS_ERROR_NET_TIMEOUT
,情况并非如此。
不幸的是,通过观察者无法听到这样的错误。您可以使用progress listener,只要加载停止,onStateChange
方法就会调用aStateFlags
LOAD_STOP
包括aStatus
标记,NS_ERROR_NET_TIMEOUT
作为频道状态{{{ 1}}在这种情况下)。