对使用ARR

时间:2019-05-15 07:51:25

标签: windows iis iis-8 url-rewrite-module arr

我在Windows 2012中的IIS 8.0下创建了网站。在该网站下创建了用ARR重写的URL,该URL指向linux计算机(基本上指向Tomcat中部署的Web服务),并且通过IIS会有“ GET”请求,其中该网址以及查询字符串超过5000个字符。通过程序或浏览器访问URL时,我看到IIS抛出“错误请求”,状态代码为400,没有子状态代码。直接将其击中Web服务时(适用于tomcat Linux),该方法同样有效。我怀疑该问题是由于网址中的多余字符所致,因为当我尝试将网址长度减少到3500个字符时,这没有任何错误。以下是我在IIS web.config和http.sys注册表中尝试过的配置和设置,但似乎没有任何作用。

<configuration>
    <system.webServer>
        <security>
            <requestFiltering allowDoubleEscaping="true">
                <requestLimits maxAllowedContentLength="4294967295" maxUrl="10999" maxQueryString="2097151">
                    <headerLimits>
                        <add header="Content-Type" sizeLimit="100000000" />
                    </headerLimits>
                </requestLimits>
            </requestFiltering>
        </security>
        <urlCompression doDynamicCompression="false" />
    </system.webServer>
    <system.web>
        <httpRuntime maxRequestLength="8192" maxUrlLength="8192" maxQueryStringLength="8192" requestPathInvalidCharacters="" />
    </system.web>
</configuration>

http.sys注册表设置

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\MaxFieldLength - DWORD - 65534
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\MaxRequestBytes - DWORD - 16777216
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\UrlSegmentMaxCount - DWORD - 16383
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\UrlSegmentMaxLength - DWORD - 32766

完成上述所有设置和配置后,我已重新启动Windows服务器。

IIS会接受这些设置和配置,而无需重写URL。如果我为同一网站尝试其他长度为5000个字符的网址,则其工作不会出现任何错误。仅对于属于URL重写配置的URL才显示。除上述内容外,是否还需要针对ARR中的URL长度进行任何特定的配置?请提出建议和帮助。 预先感谢。

1 个答案:

答案 0 :(得分:0)

正在回答我的问题。

问题出在Linux Tomcat而不是IIS上,catalina.out日志如下所示

INFO: Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Request header is too large

我在tomcat / conf的server.xml中添加了maxHttpHeaderSize =“ 65536”的配置。修改之后,问题得以解决。