我尝试向freebox发出http请求(我不知道它是否存在于法国境外)
freebox不会访问CORS请求,但她按照我的意愿行事。
例如,如果我提出权力请求:
http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1
freebox播放器启动,我有一个CORS错误:
XMLHttpRequest无法加载http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点'null'访问。
没关系,但我会检查此请求的http标头,例如,如果我检查我的代码是否正常,则freebox会返回403以查找错误代码。
我试图用Jquery获取statusCode:
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无法加载http://hd1.freebox.fr/pub/remote_control?code=5818260&key=power&long=false&repeat=1。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许原点'null'访问。响应的HTTP状态代码为403。
您可以看到此答案的结尾
“响应的HTTP状态代码为403.”。 就在jquery写错误之前(红色):
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或任何信息。
对于小型控制器,“向freebox开发者发送接受CORS的请求”的方式已经制定,但没有答案。我无法通过网络服务器。
我当前的挑战是:“我是一个lambda用户会看到我的电视,但我的免费电视遥控器无法正常工作,我可以通过我的智能手机/电脑轻松制作”
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转到电视播放器高清号码X的API
答案 0 :(得分: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();