Web API最大标头值长度?

时间:2014-04-07 21:24:25

标签: asp.net http http-headers access-token asp.net-web-api

我在ASP.Net中创建了一个Web API项目,但在验证工作方面遇到了一些麻烦。

API期望在每个请求的Authorization标头中提交令牌。检查标头是否已设置的代码检查是否

  

HttpRequestMessage.Headers.Authorization

属性为null。我测试过的前几次,我发现这个属性总是为null,但奇怪的是如果你检查了HttpRequestMessage.Headers可枚举,那么Authorization头WAS设置正确(如果你做了HttpRequestMessage.Headers.ToString() ,它也会出现在那里。)

奇怪的是,我发现如果我删除了令牌中发送的一些属性,我可以按预期工作。因此,如果标头值的字符长度太长,就好像没有设置授权属性。不幸的是,即使手动从令牌中删除了一些文本,它也会在摘要检查中继续失败,因为它应该![/ p>

我找不到任何提及这个的文档,所以我想知道是否有其他人遇到过它?我不认为IIS的标题太长,因为标题值出现在HttpRequestMessage.Headers.ToString()中,因此它被接收,但由于某种原因它没有被分配给授权属性。

不幸的是,我无法重新编写检查此属性的代码(这似乎是一个简单的解决方案),因为它是Thinktecture库的一部分(即不是我们自己编写的)。

1 个答案:

答案 0 :(得分:0)

如果您在GET上传递参数,则限制为2100个字符。 RFC spec在实现之间会有所不同。大多数浏览器将您限制为2083个字符。你绝对可以逃脱1000个字符。

Microsoft

Pretty much everybody else

如果你在POST上传递参数,你应该有几乎无限的长度。