2011-11-10 5 views
1

상태 코드가 4xx 또는 5xx 오류 인 경우 작업을 수행하는 Firefox 추가 기능을 개발 중입니다. 오류 코드가 408이면 작동이 잘되지만 작동하지 않습니다. Firefox가 오류를 표시하지만 오류가 내 확장 프로그램에 도달하지 않습니다.408 HTTP 상태 코드를 인식하는 방법은 무엇입니까?

내 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는 설정 후합니다 (이 경우 직전) 그것이 408 오류를 제외하고 얻을 수있는 모든 코드를 경고 경고 상자를 넣어했습니다.

아무에게도이를 수행하는 방법을 알고 있습니까? 미리 감사드립니다!

답변

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).

+0

오류 코드 408을 의미합니다. 테스트 목적으로 내 클라이언트에 오류 코드를 보내는 서블릿을 개발했습니다. 귀하의 솔루션이 나를 위해 작동하지 않습니다, 아마도 내가 잘못 했어? 나는 다음과 같은'aStatus == 0x804B000E''aStatus == "NS_ERROR_NET_TIMEOUT"과'aStatus == "0x804B000E"를 시도했지만 어느 것도 작동하지 않는다. 어떤 제안? – Termi

+0

@Termi :'aStatus == Components.results.NS_ERROR_NET_TIMEOUT'하지만 다른 코드를 보지 않고는별로 도움이되지 않습니다. –

+0

이제 도움이됩니다. 나는 aStatus와 NS_ERROR_NET_TIMEOUT에 경고했고, 오류가 408이면 NS_ERROR_NET_TIMEOUT이 aStatus보다 6 포인트 낮아서 6을 추가 했으므로 이제는 훌륭하게 작동한다는 것을 알게되었습니다. – Termi

관련 문제