尝试对Azure上的IIS上托管的.NET Web Api执行Ajax调用时遇到一个非常奇怪的错误。
我已通过加密获得了SSL证书,它已正确应用于网站。当我尝试执行ajax调用时,我得到:
净:: ERR_SPDY_PROTOCOL_ERROR
如果Fiddler打开,一切正常。随着Fiddler关闭,我们得到了错误。普通的旧HTTP工作得很好。
答案 0 :(得分:4)
对我来说,解决方案是Chrome严格遵守Authorization标头的格式。
标头的格式为方案令牌,并且请务必在方案后不要包含冒号,这一点很重要。我的旧样式代码的格式为Bearer: thetoken
,但失败了。我将其更改为Bearer thetoken
,现在一切正常。
headers: {
'Authorization': 'Bearer ' + token
}
答案 1 :(得分:2)
对我来说,问题在于我正在发送一个空的Authorization标头。
我的应用程序(AngularJS SPA)的登录名在JSON对象中发送用户名/密码,如果登录名有效,则返回JWT,然后将其用作Authorization标头-例如承载{JWT}用于将来的API请求。
没有内容可发送时不发送Authorization标头解决了该问题。
答案 2 :(得分:0)
我有同样的问题。我的情况下的修复是在进行API调用时更新Authorization标头以不包含JSON对象。可能是我首先不应该做的事情。 ; - )
实施例
headers: {
'Authorization': 'Bearer ' + accessToken
}
答案 3 :(得分:0)
我有同样的问题。就我而言,这是因为API无法与SQL Server建立连接(因为我已停止了该服务并忘记了重新启动它。)对我来说,但是,更相关的错误消息会使问题变得很明显。一秒钟内……而不是几分钟:-|