我尝试在我的nativescript-vue应用中提出axios请求;它在Android上运行正常,但在iOS上抛出401。在这两种情况下,我将同一台笔记本电脑分别与“ tns run android”和“ tns run ios”一起使用。
我的代码如下:
let secret = myAccessToken;
axios.request({
method: 'GET',
url: "https://someurl",
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${secret}`
}
})
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
});
我在Android上获得数据,在iOS上获得401错误消息。在互联网上搜索了一段时间之后,我尝试使用Nativescript中的“获取”:
let secret = myAccessToken;
fetch("https://someurl", {
method: "GET",
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${secret}`
}
})
.then((response) => response.json())
.then( r => {
console.log(r);
})
.catch(e => {
console.log(e)
});
具有完全相同的结果:我在Android模拟器上获得了数据,但在iOS上却未收到错误消息“ SyntaxError:JSON解析错误:无法识别的令牌'<'”。
此外,我可以通过故意输入错误的访问令牌来在iOS上重现此错误:
let secret = myAccessToken;
fetch("https://someurl", {
method: "GET",
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${123}`
}
})
.then((response) => response.json())
.then( r => {
console.log(r);
})
.catch(e => {
console.log(e)
});
因此,显然,iOS中的标头存在问题。故意输入错误的令牌时,Android和iOS会抛出相同的错误。
我还应该提到不需要令牌的呼叫可以正常工作。这样的事情可以在Android和iOS上成功获取数据:
fetch("https://someurl", {
method: "GET",
})
.then((response) => response.json())
.then( r => {
console.log(r);
})
.catch(e => {
console.log(e)
});
有人可以帮忙吗?