【问题标题】:Cancelling NSURLAuthenticationChallenge causes the NSURLConnection to fail with error取消 NSURLAuthenticationChallenge 会导致 NSURLConnection 失败并出现错误
【发布时间】:2026-02-02 09:10:01
【问题描述】:

我正在使用AFNetworking。我将AFURLConnectionOperation 子类化并使用setWillSendRequestForAuthenticationChallengeBlock 覆盖AuthenticationChallenge 的处理。我在每个请求中设置 Authorization 标头,服务器返回 401 错误凭据。

我的用例是,如果我使用错误凭据发送超过一定数量的请求,该帐户将被锁定。我试图通过取消身份验证质询来防止这种情况发生,以便只发送一个请求。

[challenge.sender cancelAuthenticationChallenge:challenge];

但是当我这样做时,连接操作失败并出现错误 -1012 (NSURLErrorDomain kCFURLErrorUserCancelledAuthentication),因此我丢失了实际的错误代码 401。

有没有办法在连接失败的情况下取消挑战?

【问题讨论】:

    标签: ios nsurlconnection authenticationchallenge


    【解决方案1】:

    取消身份验证本质上会导致请求失败。如果您想传递失败以获取错误页面正文,而不是立即断开连接,您可以在没有凭据的情况下继续,它会将错误正文传递给您的应用程序。基本上:

    [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];
    

    也就是说,我不确定您的应用为什么不能像对待 401 一样对待 kCFURLErrorUserCancelledAuthentication。:-)

    【讨论】:

      最近更新 更多