axios请求在Android上可以正常运行,但在iOS上不能正常运行

时间:2020-03-24 19:38:54

标签: ios axios nativescript nativescript-vue

我尝试在我的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)
            });

有人可以帮忙吗?

0 个答案:

没有答案