本技术资料版权所有,禁止分发.©(2003-2007),重庆软航科技有限公司,保留所有权利.NTKO和软航是软航科技的商标

NTKO OFFICE文档控件技术资料

使用HTTPS+客户端证书无法保存文档并返回 HTTP 413 错误


创建时间:12/29/2007 03:56:49 PM 修改时间: 11/01/2011 09:50:18 AM
分类:BS开发-常见问题
适应版本号:4,0,1,X; 3,0,0,x

相关文档:本文档没有相关文档

使用HTTPS+客户端证书无法保存文档并返回 HTTP 413 错误

1、问题


    使用环境:Windows Server 2003+IIS6.0+HTTPS+要求客户端证书
    文档控件保存小文档无问题,保存大文件或是等二分钟以后保存文档出现错误提示“文件传输错误,请检查您的网络”,查看IIS日志会看到HTTP 413错误.

2、分析原因

    如果 Web 服务器、网站或站点的单个目录或文件上启用了客户端证书,则客户端在上载较大的文件时可能会看到 HTTP 413 错误。

    如果客户端向运行 IIS 6.0 的 Web 服务器发送一个较长的 HTTP 请求(如 POST 请求),则 IIS 工作进程可能会收到足以解析请求标头的数据,但不会收到整个请求实体正文。当 IIS 工作进程检测到需要客户端证书以向客户端返回数据时,IIS 尝试重新协商客户端连接。不过,客户端无法重新协商连接,因为它正在等待向 IIS 发送请求中的其余数据。

    如果请求客户端重新协商,则必须使用 SSL 预加载功能预加载请求实体正文。SSL 预加载功能将使用用于 ISAPI 扩展的 UploadReadAheadSize 配置数据库属性的值。但是,如果 UploadReadAheadSize 小于内容长度,则返回 HTTP 413 错误,并关闭连接以防止出现死锁。(在以下情况下出现“死锁”:客户端正在等待发送请求实体,而服务器等待完成重新协商,重新协商要求客户端能够发送数据,可是这是无法完成的。)

3、解决方法
    解决方案是确保没有禁止客户端发送整个实体正文。为此,应将 UploadReadAheadSize 的值更改为大于内容长度的值。

    下例显示了如何将 Web 服务器上 UploadReadAheadSize 的值设置为 64 KB。(默认值49152字节)

    在命令窗口运行以下命令:
    C:\>cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs set w3svc/1/uploadreadaheadsize 65536
    w3svc为IIS服务,1为网站的序列号(可以根据网站的日志目录来确定序列号如C:\WINDOWS\system32\Logfiles\W3SVC1\..)。

    注意:对于不要求进行客户端证书身份验证的网站,不建议将 UploadReadAheadSize 属性设置为 64KB 以上,否则您将面临允许匿名拒绝服务 (DOS) 攻击的风险。当 UploadReadAheadSize 需要设置为大于 64KB 的值时,建议将 SSLAlwaysNegoClientCert 属性设置为 True,这样将要求客户端安装有效的客户端证书。

返回页面顶部↑  
本文档的相关文档: 本文档没有相关文档