Я попытался сделать запрос топора ios в своем приложении nativescript- vue; он отлично работает на Android, но выбрасывает 401 на iOS. В обоих случаях я использую один и тот же ноутбук с «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 и сообщение об ошибке 401 на iOS. После поиска по inte rnet некоторое время я пытался использовать "fetch" из 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 Ошибка разбора: нераспознанный токен '<'". </p>
Плюс, я могу воспроизвести ошибку на 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)
});
Кто-нибудь может помочь?