使用 NSURLConnection 强制进行身份验证比使用委托方法更快/更好吗?
如果我知道我的服务器 API 需要身份验证,那么直接使用 http 标头强制进行身份验证,而不是等待服务器返回 401 响应,然后在 NSURLConnection 委托方法 connection:didReceiveAuthenticationChallenge: 内对其进行响应,是否更快/更好?
If I know that authentication is required for my server API, is it faster/better to directly force authentication using http header instead of waiting for the server to return 401 response and then respond to it inside NSURLConnection delegate method connection:didReceiveAuthenticationChallenge:?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
向服务器提供身份验证凭据的“更简单的方法”是使用 NSURLConnection 委托方法
,您可以在其中提供类似于此的凭据。
将会发生的情况是,您首先使用 GET/POST 请求调用服务器,并且如果服务器需要身份验证和凭据HTTP 标头中未提供,它(希望)会以 401 响应进行响应。上述方法将触发并提供提供的凭据。
但是,如果您知道您的服务器始终需要身份验证,那么进行这一轮额外的客户端/服务器通信效率并不高,您最好直接在 HTTP 标头内提供您的凭据。
除了 iOS 没有提供编码为 BASE64 的方法之外,在 HTTP 标头内提供凭据的方法很简单。
The "easier way" to provide authentication credentials to a server is to use NSURLConnection delegate method
where you can provide credentials similar to this
What will happen is that you first call server with your GET/POST request and if the server requires authentication, and credentials were not provided inside HTTTP header, it will (hopefully) respond with 401 response. The above method will trigger and provide supplied credentials.
But if you know that your server will always require authentication, it is not efficient to make this extra round of client/server communication and you will be better off to provide your credentials straight away inside the HTTP header.
The method of providing credentials inside HTTP header is simple apart from the fact that iOS doesn't come with a method to encode to BASE64.