HTTP 错误 414.0 - URL 太长。但是 URL 很短
HTTP Error 414.0 - URL Too Long. But URL is short
我有一个 JS 文件,其中 returns HTTP 错误 414.0 - URL 太长。
URL 不是特别长 - http://beta.abcdefg.abc.ab/abcdef/abcdefgh.js
我怀疑物理路径可能太长了,但只有 91 个字符 -
\abcdefsitestorage.file.core.windows.net\iisfarm\Websites\asp\asp-apps\abcdef\abcdefgh.js
(示例与真实 URL 的长度和结构相同)
我已经尝试了 web.config 中的设置,但它们没有任何区别
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" maxRequestLength="2147483647" executionTimeout="1200" maxQueryStringLength="2097151" maxUrlLength ="65536" relaxedUrlToFileSystemMapping="true"/>
和
<security>
<requestFiltering>
<requestLimits maxUrl ="65536" maxAllowedContentLength="4294967295" maxQueryString ="2097151" />
</requestFiltering>
</security>
我现在 运行 没有想法,所以如果有人能指出我正确的方向,那就太好了!
编辑:
已确认问题出在 IIS 上。服务器响应 header 是服务器:Microsoft-IIS/10.0
当前正在尝试获取 FRT 运行ning,目前未记录任何内容。
<system.webServer>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
<add provider="WWW Server" areas="Rewrite,Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module" verbosity="Verbose" />
</traceAreas>
<failureDefinitions statusCodes="100-900" />
</add>
</traceFailedRequests>
</tracing>
</system.webServer>
编辑 2:
我一直在做一些更多的测试,在这个特定的位置,对于 .js、.css 和 .txt 文件,它会出现 414 错误,但对于 .aspx 文件,它不会出错。
non-aspx 个文件是否设置了限制?
编辑 3:
即使目标文件不存在,它也会给出 414 错误!
这个错误实际上是从 http.sys 中抛出的,而不是从 IIS 中抛出的。在请求传递到 request-handling 管道中的 IIS 之前抛出错误。
- 要验证这一点,您可以检查 HTTP 中的服务器 header 值
根据 https://whosebug.com/a/32022511/12484.
响应 header 秒
要让 https.sys 接受更长的请求 URL 而不会抛出 HTTP 414 错误,请在服务器 PC 的 Windows 注册表中,在 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters,创建一个 DWORD-type 名称为 MaxFieldLength 且值足够大的值,例如65535.
更多信息可以参考这个link:https://whosebug.com/a/34638320/13336642.
我已经解决了。
414 错误完全是转移注意力。
这是虚拟目录的权限问题。它使用的是通过身份验证,这似乎适用于 .aspx 页面但不适用于任何其他文件类型。
我现在指定了一个特定的用户来连接,一切正常。
我有一个 JS 文件,其中 returns HTTP 错误 414.0 - URL 太长。
URL 不是特别长 - http://beta.abcdefg.abc.ab/abcdef/abcdefgh.js
我怀疑物理路径可能太长了,但只有 91 个字符 - \abcdefsitestorage.file.core.windows.net\iisfarm\Websites\asp\asp-apps\abcdef\abcdefgh.js
(示例与真实 URL 的长度和结构相同)
我已经尝试了 web.config 中的设置,但它们没有任何区别
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" maxRequestLength="2147483647" executionTimeout="1200" maxQueryStringLength="2097151" maxUrlLength ="65536" relaxedUrlToFileSystemMapping="true"/>
和
<security>
<requestFiltering>
<requestLimits maxUrl ="65536" maxAllowedContentLength="4294967295" maxQueryString ="2097151" />
</requestFiltering>
</security>
我现在 运行 没有想法,所以如果有人能指出我正确的方向,那就太好了!
编辑:
已确认问题出在 IIS 上。服务器响应 header 是服务器:Microsoft-IIS/10.0
当前正在尝试获取 FRT 运行ning,目前未记录任何内容。
<system.webServer>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
<add provider="WWW Server" areas="Rewrite,Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module" verbosity="Verbose" />
</traceAreas>
<failureDefinitions statusCodes="100-900" />
</add>
</traceFailedRequests>
</tracing>
</system.webServer>
编辑 2:
我一直在做一些更多的测试,在这个特定的位置,对于 .js、.css 和 .txt 文件,它会出现 414 错误,但对于 .aspx 文件,它不会出错。
non-aspx 个文件是否设置了限制?
编辑 3:
即使目标文件不存在,它也会给出 414 错误!
这个错误实际上是从 http.sys 中抛出的,而不是从 IIS 中抛出的。在请求传递到 request-handling 管道中的 IIS 之前抛出错误。
- 要验证这一点,您可以检查 HTTP 中的服务器 header 值 根据 https://whosebug.com/a/32022511/12484. 响应 header 秒
要让 https.sys 接受更长的请求 URL 而不会抛出 HTTP 414 错误,请在服务器 PC 的 Windows 注册表中,在 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters,创建一个 DWORD-type 名称为 MaxFieldLength 且值足够大的值,例如65535.
更多信息可以参考这个link:https://whosebug.com/a/34638320/13336642.
我已经解决了。
414 错误完全是转移注意力。
这是虚拟目录的权限问题。它使用的是通过身份验证,这似乎适用于 .aspx 页面但不适用于任何其他文件类型。
我现在指定了一个特定的用户来连接,一切正常。