IIS7 https 发生413错误 未显示页面,因为请求实体过大
2017-01-18 17:05
2743 查看
参考文档: http://msdn.microsoft.com/zh-cn/library/cc737382(v=ws.10).aspx
http://www.java123.net/v/127192.html
http://blogs.iis.net/rakkimk/archive/2009/03/17/iis7-tweet-1-setting-uploadreadaheadsize.aspx
如果 Web 服务器、网站或站点的单个目录或文件上启用了客户端证书,则客户端在上载较大的文件时可能会看到 HTTP 413 错误。
如果客户端向运行 IIS 6.0 的 Web 服务器发送一个较长的 HTTP 请求(如 POST 请求),则 IIS 工作进程可能会收到足以解析请求标头的数据,但不会收到整个请求实体正文。当 IIS 工作进程检测到需要客户端证书以向客户端返回数据时,IIS 尝试重新协商客户端连接。不过,客户端无法重新协商连接,因为它正在等待向 IIS 发送请求中的其余数据。
如果请求客户端重新协商,则必须使用 SSL 预加载功能预加载请求实体正文。SSL 预加载功能将使用用于 ISAPI 扩展的 UploadReadAheadSize 配置数据库属性的值。但是,如果 UploadReadAheadSize 小于内容长度,则返回 HTTP 413 错误,并关闭连接以防止出现死锁。(在以下情况下出现“死锁”:客户端正在等待发送请求实体,而服务器等待完成重新协商,重新协商要求客户端能够发送数据,可是这是无法完成的。)
解决方案是确保没有禁止客户端发送整个实体正文。为此,应将 UploadReadAheadSize 的值更改为大于内容长度的值和最大请求实体主体限制更改为大于文件大小。
关于如何设置IIS7的配置,请参考http://www.iis.net/ConfigReference
一. 配置UploadReadAheadSize
Appcmd.exe命令位于"%WinDir%\System32\Inetsrv"
appcmd.exe set config -section:system.webServer/serverRuntime /uploadReadAheadSize:"49152" /commit:apphost
你把"uploadReadAheadSize"的值逐渐改大来做测试,比如可以98304 -> 196608 -> 393216。
二. 配置MaxRequestEntityAllowed
在IIS“功能视图”中双击“ASP”模块,打开“限制属性”,将最后一项“最大请求实体主体限制[maxRequestEntityAllowed]”改为你需要的值(例如 1073741824, 1GB)。
同时,请注意如果你上传的文件较大,请考虑一下“脚本超时[scriptTimeOut]”是否需要更改, 默认是00:01:30,这里改成了00:05:30。
http://www.java123.net/v/127192.html
http://blogs.iis.net/rakkimk/archive/2009/03/17/iis7-tweet-1-setting-uploadreadaheadsize.aspx
如果 Web 服务器、网站或站点的单个目录或文件上启用了客户端证书,则客户端在上载较大的文件时可能会看到 HTTP 413 错误。
如果客户端向运行 IIS 6.0 的 Web 服务器发送一个较长的 HTTP 请求(如 POST 请求),则 IIS 工作进程可能会收到足以解析请求标头的数据,但不会收到整个请求实体正文。当 IIS 工作进程检测到需要客户端证书以向客户端返回数据时,IIS 尝试重新协商客户端连接。不过,客户端无法重新协商连接,因为它正在等待向 IIS 发送请求中的其余数据。
如果请求客户端重新协商,则必须使用 SSL 预加载功能预加载请求实体正文。SSL 预加载功能将使用用于 ISAPI 扩展的 UploadReadAheadSize 配置数据库属性的值。但是,如果 UploadReadAheadSize 小于内容长度,则返回 HTTP 413 错误,并关闭连接以防止出现死锁。(在以下情况下出现“死锁”:客户端正在等待发送请求实体,而服务器等待完成重新协商,重新协商要求客户端能够发送数据,可是这是无法完成的。)
解决方案是确保没有禁止客户端发送整个实体正文。为此,应将 UploadReadAheadSize 的值更改为大于内容长度的值和最大请求实体主体限制更改为大于文件大小。
关于如何设置IIS7的配置,请参考http://www.iis.net/ConfigReference
一. 配置UploadReadAheadSize
Appcmd.exe命令位于"%WinDir%\System32\Inetsrv"
appcmd.exe set config -section:system.webServer/serverRuntime /uploadReadAheadSize:"49152" /commit:apphost
你把"uploadReadAheadSize"的值逐渐改大来做测试,比如可以98304 -> 196608 -> 393216。
二. 配置MaxRequestEntityAllowed
在IIS“功能视图”中双击“ASP”模块,打开“限制属性”,将最后一项“最大请求实体主体限制[maxRequestEntityAllowed]”改为你需要的值(例如 1073741824, 1GB)。
同时,请注意如果你上传的文件较大,请考虑一下“脚本超时[scriptTimeOut]”是否需要更改, 默认是00:01:30,这里改成了00:05:30。
相关文章推荐
- 网络爬虫防止被封的策略
- wireshark 抓包分析 TCPIP协议的握手
- TCP三次握手和漏洞解决
- React-Native傻瓜式学习笔记(三):基于事件发布/订阅的网络请求工具类封装
- Android下使用TCPDUMP抓包Wireshark分析数据
- (四十五)网络基础——OSI七层模型简介和TCP/IP四层模型及其通信过程
- 网络七层协议的通俗理解
- 设置WebView接受所有网站的证书加载https
- iOS识别http是否使用了代理(proxy)
- OKhttp使用双向验证
- nohttp的封装
- 简单网络爬虫实现<爬取网页邮箱>
- 随笔——python截取http请求报文响应头
- Flutter进阶—网络与本地异步加载资源
- 通过json发送Http请求
- HttpURLConnection 发送PUT请求,设置请求头参数 json请求体
- Neutron dhcp agent创建网络过程
- 网络框架的优缺点
- Window+TCP+connect 超时阻塞解决办法
- 江苏中理网络科技乾坤云部署系统可以实现