503 仅在特定设备上响应一次呼叫(iOS 应用程序)

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

我仅在一台特定设备上遇到一些问题。 只有一个 API 调用设备挂起并返回 503(我可以从 Charles 看到)。所有其他设备和模拟器都工作正常,没有任何问题。 在该设备上,我尝试清理/安装应用程序、更新 iOS 固件、重新启动手机、尝试 WiFi 和 SIM 卡。我还尝试删除 Charles 并确保未启用 WiFi VPN 或代理。

我有一个用于 API 调用的通用函数,因此一些有效的调用来自同一个函数。只是不同的路径(相同的标题)。

这是应用程序/前端问题吗?我怎样才能进一步调试?

ios swift http-status-code-503
1个回答
0
投票

500+范围内的任何错误都是服务器端错误。因此,一般规则是所有 500 多个错误都应该首先从服务器端进行调查。具体

503 Service Unavailable 服务器错误响应代码表示服务器尚未准备好处理请求。

<...>

来源

所以我对服务器端的问题是:

谁将此错误代码返回给客户端:可以是负载均衡器,也可以是服务器本身
  • 为什么?服务器或负载均衡器日志应该有足够的线索来弄清楚。
  • 在客户端,你仍然可以做一些事情:

    查看通过 503 响应发送的标头。他们可能会知道发生了什么。例如,常见模式是查看服务器是否发送了
  1. Retry-After

    标头(如上面的页面也建议的那样。

    
    

  2. 既然您说某些请求成功,请比较响应中服务器的
  3. 实际IP

    是否成功和失败(Charles 显示)。可能是,您有 2 个或更多节点,其中一些可以正常工作,有些则不能。

  4. 如果您正在处理某种云服务器(例如 AWS),503 的常见情况是缺乏权限。
  5. This

    提供了此类案例的一个很好的例子。所以检查失败是否与权限有关。 即使在服务器上调试此故障也有点棘手,因为 服务器甚至可能不会记录此类访问尝试;在这种情况下启用 LB 日志 - 它们应该为您指明正确的方向。

    如果不可能,请确保擦除设备上的所有凭据,然后 尝试使用绝对有效的帐户。如果您的应用程序正在使用 钥匙串,请确保以编程方式清除它,因为即使 卸载应用程序并不能清理它。

  6. 问题 2 和问题 3 的组合也很常见:集群的某些节点上的权限配置不正确,因此取决于您的运气,您可能最终会遇到“坏”节点。由于 LB 和客户端缓存服务器 IP,该特定设备大多数时候可能会出现在“坏”服务器上。
© www.soinside.com 2019 - 2024. All rights reserved.