URL 中的 %09 会导致 IIS (HTTP.SYS?) 立即返回 HTTP 400



我发现IIS7,7.5和8(可能还有以前的版本)在遇到任何包含不属于查询字符串的%09的URL时会快速失败。

StackOverflow本身表现出相同的行为,观察:

http://www.stackoverflow.com/questions/%09

这对我的应用程序来说很烦人,因为我构建了一个 Web 服务,它应该为每个请求返回text/xml,即使是无效的请求,其中包含包含错误代码的特定 XML 文档格式。我发现一些 Web 服务客户端将%09(通常是由用户复制和粘贴引起的)传递给我的服务,但我的服务器返回了一个丑陋的 HTML 响应,该响应似乎硬编码为 HTTP.SYS(我在 IIS 中覆盖了 HTTP 400 错误响应,但它没有效果)。

错误请求 - 无效的 URL

HTTP 错误 400。请求 URL 无效。

是否有任何解决方法或解决方案?

备忘录:

为了比较:

  • 谷歌正确地提供HTTP 404:https://www.google.com/%09
  • Apache似乎让MediaWiki处理了这个错误:http://en.wikipedia.org/wiki/Foo%09
  • IIS 不:http://microsoft.com/download/%09

我发现了另一个问题,它指向了Windows文档的Http.sys注册表设置和HKEY_LOCAL_MACHINESystemCurrentControlSetServicesHTTPParameters中的AllowRestrictedChars注册表项。我已经确认将其设置为 1 允许请求通过 HTTP.SYS而不会立即被拒绝。然后,IIS 发回自己的 400 页,但至少它会到达 IIS 并出现在 IIS 日志中。此时,可以进一步处理应用自定义错误页面等的请求。

相关内容

  • 没有找到相关文章

最新更新