在发出任何请求之前验证服务器身份

Validate server identity before making any request

我在我的应用程序中添加了生产证书并且运行良好。但现在我想在进行任何 API 调用之前验证身份。我希望能够在使用用户名和密码创建 POST 之前验证服务器。这样我就可以事先阻止用户。

有什么方法可以做到这一点,还是我应该只请求服务器为此目的创建一个 public 方法?

我认为您要问的问题是:"Does AFNetworking have any automatic detection and validation code built into it?",答案是 "As far as I know, no." 正如您在问题中指出的那样,您需要查看手动选项。

想到的一些选项:

如果您的服务器和 server-side 应用程序支持它,您可以发出 HEADOPTIONS HTTPS 请求以在将数据发布到服务器之前验证服务器的安全连接。请注意,它会增加网络流量,因此在网络连接速度较慢的情况下,它可能会给用户体验带来明显的延迟。您可以通过缓存结果并不时在后台执行网络检查来缓解这种情况。这些 request/response 对话所需的带宽非常小,因为它们通常只发送 HTTP headers,而不是有效载荷。

这里的棘手部分是 "If your server and server-side application support it"。现代服务器平台应该支持这两种方法,但必须配置应用程序端点以适当地响应这些方法。 (也就是说,服务器应用程序可以配置为仅响应 POST 请求,并拒绝其他所有请求。)

唯一确定的方法是尝试,但请确保协调此方法的使用,以确保您的服务器团队知道这是您必需的用例。否则,您 运行 有使用未记录方法的风险,将来有人会关闭该方法,因为他们不知道有人在使用它。

否则,您当然可以按照您的建议进行操作——要求服务器应用程序创建一个 public ping 端点,以较小的(或不)响应 HTTP GET 请求有效负载和成功的 agreed-on HTTP 响应(200 OK 很常见)。这通常用于健康检查,还有一个额外的好处,就是让您在发出请求之前提醒用户服务器正在报告健康问题(无论安全连接的有效性如何)。