ax ios запрос отлично работает на Android, но не на iOS - PullRequest
0 голосов
/ 24 марта 2020

Я попытался сделать запрос топора 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)
            });

Кто-нибудь может помочь?

...