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

标签 http iis http.sys

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

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

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

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

Bad Request - Invalid URL

HTTP Error 400. The request URL is invalid.

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

备忘录:

比较:

最佳答案

我找到了 this other question这让我指向了 Http.sys registry settings for Windows文档和 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters 中的 AllowRestrictedChars 注册表项。我已经确认将此设置为 1 允许请求通过 HTTP.SYS 而不会被立即拒绝。然后 IIS 发回它自己的 400 页,但至少它到达 IIS 并出现在 IIS 日志中。届时可以进一步处理应用自定义错误页面等的请求。

关于http - URL 中的 %09 导致 IIS(HTTP.SYS?)立即返回 HTTP 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19534080/

相关文章:

asp.net - IIS 7.5 404 未通过其中一个 http 绑定(bind)找到所有图像

iis - 从命令行设置 Url 段最大长度

asp.net - 每 1 秒 <1KB 调用的 HTTP Keep-Alive

java - 由于神秘原因,具有 POST 文件上传功能的 Apache HttpClient 无法进行基本身份验证

http - 在golang fasthttp中获取任意请求 header value

asp.net - 如何使用 MSBuild 命令行运行 ASP.NET MVC 应用程序

asp.net - IIS 禁用 SSLv3 - 它会影响传出请求吗?

windows - 没有 HTTP.SYS 的 WCF

c# - 第 2 轮 : HttpListener not receiving outside requests

http - http get请求的参数可以是url吗?