【问题标题】:jquery ajax unauthorized request, returns "NetworkError" and status 0jquery ajax 未经授权的请求,返回“NetworkError”和状态 0
【发布时间】:2013-12-30 23:46:58
【问题描述】:

我的主要目标是了解在使用 ajax 和 asp.net web api 后端的客户端(浏览器)之间的授权过程中究竟发生了什么。

所以最初,我通过浏览器中的 ajax 向我的一个控制器(允许“Access-Control-Allow-Origin”)发出一个简单的 GET 请求。我接受了我想要的回应,到目前为止一切正常。

然后,我在 web api 上的同一个控制器上设置一个授权属性,我再次发出一个简单的 GET 请求以研究结果。所以,在萤火虫的帮助下,我看到有一个“NetworkError:401 Unauthorized - localhost/api/values”。

此外,在结果对象上,我看到以下值:readyState:0,responseText:“”,status:0,statusText:“error”。这是正常的吗?我不应该看到例如状态:401吗? 我想我可以使用这个线程的公认解决方案:Unauthorized AJAX request succeeds 但我更喜欢更严格地检查潜在的 401 结果。

我的一个想法是,默认情况下,当您使用授权属性时,可能 asp.net Web API 在未经授权的响应中不包含“Access-Control-Allow-Origin”标头,因此我在全局范围内添加一个自定义操作过滤器,它将“Access-Control-Allow-Origin”添加到每个响应中,但它并没有解决我的问题,所以我猜不是这样。

【问题讨论】:

    标签: ajax asp.net-web-api cors http-status-code-401


    【解决方案1】:

    我找到了解决方案。我关于导致此问题的原因的假设最终被证明是正确的。当未经授权的请求到达需要授权的控制器(使用授权属性)时,响应不包括标题“Access-Control-Allow-Origin”。因此客户端上 jqXHR 的状态是 0 而不是 401。

    所以我在asp.net web api Web.config中添加了“Access-Control-Allow-Origin”,终于可以正常工作了。

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 1970-01-01
      • 2012-08-17
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2017-10-16
      相关资源
      最近更新 更多