仅当用户位于AT&T 5Ge网络上并且用户已登录时,才会发生网络错误

问题描述 投票:0回答:1

我已经使用React Native构建了一个移动应用。该应用程序与我使用Laravel框架构建的REST API连接。此API托管在VPS上,并通过HTTPS提供服务。

该移动应用程序可以按我预期的方式工作,但以下用例除外:

用户拥有iPhone 8+。该用户的运营商是AT&T。具体来说就是5Ge。该用户可以下载该应用程序并安装它,没有问题。当他们打开应用程序时,该应用程序将连接到API,并获取数据以显示在主屏幕上。用户可以使用其凭据将其登录,然后将其凭据发送到API,并且API在有效的登录名上返回访问令牌。

每个后续请求,均发送带有授权标头:Bearer [token]具体来说,这些请求永远不会到达服务器。该用户无法访问API的所有经过身份验证的路由。

[Verizon和TMobile等其他网络上的用户没有此问题。

移动应用使用Axios库发送HTTP请求。超时25000(最大可以在iOS上发送吗?)作为选项传递给已验证的操作。该用户操作失败。

已捕获错误,然后将其发送到API上的公共路由,请求中没有Authorization标头。此请求到达服务器,并将来自移动应用程序的请求中的错误消息添加到服务器上的错误日志中。

[当我检查由身份验证的操作失败引发的错误时,它将读取“网络错误”,代码为0。

如果将超时设置为较低,则为15000,则失败的已验证操作抛出的错误是超时错误,超过15000。

我今天已经联系了AT&T,他们说我们应该联系Apple。

[他们将我们修补到Apple之后,Apple说问题听起来像是细胞塔问题,并愿意在手机上运行诊断程序。

我的问题是:当用户在AT&T网络上时,为什么包含授权标头Bearer令牌的请求无法到达我的服务器。承载令牌是否会使请求变得庞大,并将请求减慢到我们的塔无法发送的位置?还是AT&T是否有某种中间件会由于某种原因破坏请求?授权标头可能导致AT&T以不同方式处理请求并以其他方式发送该请求,并且这种方式DNS错误可能导致请求失败。

[请帮助,我希望我已经解释得足够好了。

编辑:Laravel Passport为长度超过1000个字符的经过身份验证的API生成access_token。看来我可以减少一半左右。我接下来要尝试。

laravel react-native http-headers authorization cellular-network
1个回答
0
投票

我发现现在已解决。

我做了两件事。我将Laravel Passport密钥重置为指定的--1024长度。这导致我的访问令牌长约557个字符,而不是1000 +

我还在子域中进行了一些DNS更改。我所做的扫描显示子域和父域之间的名称服务器父不匹配错误。我进行了更改,并使那些警告消失了。

这些是我所做的。我做了这些更改之后,今晚有两个与AT&T网络运营商合作的应用程序用户测试了该应用程序。他们登录了。打开了时钟。计时到了。该请求通过新的较短的访问令牌按预期发送到了我的服务器。

我不知道这两个问题中的哪一个解决了此问题。但是我可能会猜测这是我解决的DNS问题。我仍然感到奇怪的是,该问题仅在请求的标头中带有授权令牌时才发生在AT&T网络上。

© www.soinside.com 2019 - 2024. All rights reserved.