【问题标题】:ERR_SPDY_PROTOCOL_ERROR Ajax .net web apiERR_SPDY_PROTOCOL_ERROR Ajax .net web api
【发布时间】:2018-01-10 02:29:36
【问题描述】:

尝试对托管在 Azure 上的 IIS 上的 .NET Web Api 执行 Ajax 调用时遇到一个非常奇怪的错误。

我从 let's encrypt 获得了我的 SSL 证书,它已正确应用于网站。当我尝试执行 ajax 调用时,我得到:

net::ERR_SPDY_PROTOCOL_ERROR

如果 Fiddler 已打开,则一切正常。关闭 Fiddler 后,我们得到了错误。常规的旧 HTTP 工作正常。

【问题讨论】:

  • 大卫,你发现了吗?有完全相同的问题。托管在 Azure 中的 .Net WebAPI。突然开始在我们的生产系统中发生,应用程序或托管没有任何变化。
  • 这是一个 JavaScript 语法错误 - 请仔细检查您的 Auth 标头的语法。

标签: jquery ajax azure ssl iis


【解决方案1】:

我也有同样的问题。在我的情况下,修复是在进行 API 调用时更新 Authorization 标头以不包含 JSON 对象。可能是我一开始就不应该做的事情。 ;-)

例子

headers: {
    'Authorization': 'Bearer ' + accessToken
}

【讨论】:

    【解决方案2】:

    我有同样的问题。在我的情况下,发生这种情况是因为 API 无法连接到 SQL Server(因为我已经停止了服务并忘记重新启动它。)对我来说是这样,但是,更相关的错误消息会使问题变得明显在一秒钟内......而不是几分钟:-|

    【讨论】:

      【解决方案3】:

      我的解决方案是 Chrome 对 Authorization 标头的格式非常严格。

      标头的格式是方案标记,重要的是您不要在方案后包含冒号。我的旧样式代码的格式为Bearer: thetoken,但失败了。我将其更改为Bearer thetoken,现在一切正常。

      headers: {
          'Authorization': 'Bearer ' + token
      }
      

      【讨论】:

        【解决方案4】:

        对我来说,问题是我发送了一个空的 Authorization 标头。

        登录到我的应用程序(AngularJS SPA)在 JSON 对象中发送用户名/密码,如果登录有效,则返回 JWT,然后将其用于授权标头 - 例如未来 API 请求的承载 {JWT}。

        当没有要发送的内容时不发送授权标头修复了问题。

        【讨论】:

        • 这正是我们在使用 Web API 时遇到的问题。奇怪的是它只发生在某些服务器上而不是其他服务器上。我们能够用这个解决我们的问题。谢谢。
        猜你喜欢
        • 2019-04-29
        • 2017-10-30
        • 1970-01-01
        • 2019-06-04
        • 2013-10-01
        • 2019-06-27
        • 2018-05-08
        • 2015-09-04
        • 1970-01-01
        相关资源
        最近更新 更多