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

时间:2016-02-12 13:42:28

标签: ios ssl-certificate afnetworking-2

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

有没有办法做到这一点,还是我只是要求服务器只为此目的创建一个公共方法?

1 个答案:

答案 0 :(得分:1)

我认为你问的问题是:“AFNetworking是否内置了自动检测和验证代码?”,答案是“据我所知,不是。”正如您在问题中指出的那样,这使您可以查看手动选项。

想到的一些选项:

如果您的服务器和服务器端应用程序支持它,您可以在向其发布数据之前发出HEADOPTIONS HTTPS请求以验证服务器的安全连接。请注意,它会增加网络流量,因此在慢速网络连接上,它可能会为用户体验增加可察觉的延迟。您可以通过缓存结果并不时在后台执行网络检查来缓解此问题。这些请求/响应对话所需的带宽非常小,因为它们通常只发送HTTP标头,而不是有效负载。

这里棘手的部分是“如果您的服务器和服务器端应用程序支持它”。现代服务器平台应该支持这两种方法,但必须配置应用程序端点以适当地响应这些方法。 (也就是说,服务器应用程序可能配置为仅响应POST请求,并拒绝其他所有请求。)

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

如果做不到这一点,你当然可以按照你的建议去做 - 请求服务器应用程序创建一个公共ping端点,该端点响应具有少量(或没有)有效负载的HTTP GET请求并达成一致意见成功的HTTP响应(200 OK很常见)。这通常用于运行状况检查,并且还有一个额外的好处,即在发出请求之前让您提醒用户服务器报告健康问题(无论安全连接的有效性)。