2015-05-09 3 views
1

Я пытаюсь сделать запрос HTTP к Freebox (я не знаю, если это существует за пределами Франции)поймать ошибку JQuery Ajax позже

FREEBOX не имеет доступа к CORS запроса, но она делает то, что я буду ,

Например, если я делаю запрос к власти:

http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1 

старт Freebox игрок, и у меня есть ошибка CORS:

XMLHttpRequest cannot load http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1 . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

Это нормально, но я буду проверять заголовок HTTP для этого запроса, например, если я проверю, хорош ли мой код, freebox возвращает 403 для плохого кода.

Я пытался получить StatusCode с Jquery:

  xhr = $.ajax({ 
      method: "GET", 
      url: url, 
      crossDomain: true, 
      statusCode: { 
       500: function() { 
        alert("Une erreur s'est produite !"); 
       }, 
       403: function(){ 
        alert("aaaaa") 
        throw new badTelecommandeCode(); 
       }, 
       404: function(){ 
        throw new freeboxNotFound(); 
       }, 
       0: function(){console.log(0)} 
      }, 
      error: function (err) { 
       console.log(err); 
      } 
     }); 

Все это время, код состояния 0, и «ошибка» не запускать. У меня есть эта ошибка в консоли:

XMLHttpRequest cannot load http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1 . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 403.

Вы можете увидеть конец этого ответа

"The response had HTTP status code 403.". Just before jquery write an error (in red):

GET http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1 

я пытаюсь поймать ошибку:

 try{ 
     xhr = $.ajax({ 
      method: "GET", 
      url: url, 
      crossDomain: true, 
      statusCode: { 
       500: function() { 
        alert("Une erreur s'est produite !"); 
       }, 
       403: function(){ 
        alert("aaaaa") 
        throw new badTelecommandeCode(); 
       }, 
       404: function(){ 
        throw new freeboxNotFound(); 
       } 
      }, 
      error: function (err) { 
       console.log(err); 
      } 
     }); 
    } 
    catch(err){ 
     console.log(err); 
    } 

Я пытаюсь поиск, где ошибка имеет улов по jQuery:

http://code.jquery.com/jquery-2.1.4.js line 8634 

Вы нашли способ поймать сообщение CORS и проанализировать его, или поймать сообщение jquery, и почему бы не получить statusCode или любую информацию.

Для маленького троллейщика способ «Отправить запрос разработчику бесплатного ПО для принятия CORS» уже готов, но ответа нет. Я не могу пройти через веб-сервер.

Моей Текущая задача состоит в том: «Я пользователь лямбды увидит мой телевизор, но мой Free Tv Remote не работает, что я могу сделать легко, с моим смартфоном/PC»

Update1 : у меня есть сделать пример:

, если это работа хорошо:

xhr = $.ajax({ 
    method: "GET", 
    url: "http://hd1.freebox.fr/pub/remote_control?code=5818261&key=right&long=false&repeat=1", 
    crossDomain: true, 
    statusCode: { 
     500: function() { 
      alert("Une erreur s'est produite !"); 
     }, 
     403: function(){ 
      alert("badTelecommandeCode") 
     }, 
     404: function(){ 
      alert("freeboxNotFound") 
     } 
    }, 
    error: function (err) { 
     // console.log(err); 
    }, 
    fail:function(jqxhr, textStatus, errorThrown) { 
     // console.log(errorThrown); 
    } 
}); 

хороший ключ, хороший код, мой телевизор сделать действие, и возвращает ошибку CORS CORS Without http error

Я поймаю, если код плохо, или если ключ не существует:

 xhr = $.ajax({ 
    method: "GET", 
    url: "http://hd1.freebox.fr/pub/remote_control?code=5818261&key=ping", 
    crossDomain: true, 
    statusCode: { 
     500: function() { 
      alert("Une erreur s'est produite !"); 
     }, 
     403: function(){ 
      alert("badTelecommandeCode") 
     }, 
     404: function(){ 
      alert("freeboxNotFound") 
     } 
    }, 
    error: function (err) { 
     // console.log(err); 
    }, 
    fail:function(jqxhr, textStatus, errorThrown) { 
     // console.log(errorThrown); 
    } 
}); 
xhr = $.ajax({ 
    method: "GET", 
    url: "http://hd1.freebox.fr/pub/remote_control?code=222222&key=ping", 
    crossDomain: true, 
    statusCode: { 
     500: function() { 
      alert("Une erreur s'est produite !"); 
     }, 
     403: function(){ 
      alert("badTelecommandeCode") 
     }, 
     404: function(){ 
      alert("freeboxNotFound") 
     } 
    }, 
    error: function (err) { 
     // console.log(err); 
    }, 
    fail:function(jqxhr, textStatus, errorThrown) { 
     // console.log(errorThrown); 
    } 
}); 

CORS error with http status error У меня есть CORS, не проблема, но как я могу поймать текст, скажем, http статус.

Для информации: freebox.fr является правилом NAT, перенаправление на мой маршрутизатор (FREEBOX), hdX.freebox.fr перейти к API для ТВ-плеера hd номер X

+1

Вы можете использовать для этого обещания –

+1

Проверьте это: http://stackoverflow.com/questions/3825581/does-an-http- status-code-of-0-have-any-смысл/26451773 # 26451773 Состояние ошибки '0' может произойти, когда' запрос был CORS, и ответ не мог быть общим ' –

+0

@BenjaminGruenbaum в любом примере? – thib3113

ответ

0

По-прежнему не определенно интерпретировать вопрос правильно. Кажется, ответ не получен от url. 0 не представляется допустимым кодом ответа HTTP, см. HTTP status code 0 - what does this mean for fetch, or XMLHttpRequest?. error вошли в console

GET http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1 net::ERR_CONNECTION_TIMED_OUT 

после запроса ниже

var xhr = new XMLHttpRequest(); 
xhr.open("GET", "http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1", true); 
xhr.onload = function() { 
    console.log(this.status) 
} 
xhr.onerror = function(e) { 
    console.log(e, this.status) 
} 
xhr.send(); 
+0

У меня такое же возвращение, если оно работает или нет: /, статус «0» – thib3113

+0

@ thib3113 Что такое требование? , ожидаемый результат ? – guest271314

+0

1 - проверьте, действительно ли удаленный код сети ТВ (код = XXX в http), это возвращает ошибку HTTP 403, если недействительно , но сервер не принимает CORS – thib3113

Смежные вопросы