Я пытаюсь сделать запрос 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
Я поймаю, если код плохо, или если ключ не существует:
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, не проблема, но как я могу поймать текст, скажем, http статус.
Для информации: freebox.fr является правилом NAT, перенаправление на мой маршрутизатор (FREEBOX), hdX.freebox.fr перейти к API для ТВ-плеера hd номер X
Вы можете использовать для этого обещания –
Проверьте это: http://stackoverflow.com/questions/3825581/does-an-http- status-code-of-0-have-any-смысл/26451773 # 26451773 Состояние ошибки '0' может произойти, когда' запрос был CORS, и ответ не мог быть общим ' –
@BenjaminGruenbaum в любом примере? – thib3113