如何防止浏览器调用基本身份验证弹出窗口并使用Jquery处理401错误?

我需要使用基本身份验证发送授权请求。我已经使用jquery成功地实现了这一点。但是,当我收到401错误时,基本身份验证浏览器弹出窗口被打开,并且不调用jquery ajax错误回调。


答案 1

我最近也遇到了这个问题。由于您无法更改浏览器在发生(基本摘要式身份验证)时显示弹出窗口的默认行为,因此有两种方法可以解决此问题:401

  • 将服务器响应更改为不返回 .而是返回一个代码,并在 jQuery 客户端中处理此代码。401200
  • 将用于授权的方法更改为标头中的自定义值。浏览器将显示“基本”和“摘要”的弹出窗口。您必须在客户端和服务器上更改此设置。

    headers : {
      "Authorization" : "BasicCustom"
    }
    

另请查看此内容,了解将 jQuery 与 Basic Auth 配合使用的示例。


答案 2

返回通用 400 状态代码,然后处理该客户端。

或者,您可以保留 401,而不返回 WWW-Authenticate 标头,这实际上是浏览器通过身份验证弹出窗口响应的内容。如果缺少 WWW 身份验证标头,则浏览器不会提示输入凭据。