Windows身份验证IIS站点Chrome上传70KB以上文件提示需身份验证问题
问题根源
该问题由IIS+Windows身份验证场景下的默认配置与Chrome的请求逻辑差异导致:
- IIS默认
uploadReadAheadSize参数值为49152字节(约48KB),当POST请求体超过该阈值时,IIS不会预读完整请求内容,会先返回401身份验证要求 - Chrome对该场景下的
Expect: 100-continue交互逻辑与IE、Firefox不同,无法在身份验证通过后继续传输剩余请求内容,因此会触发重复的身份验证弹窗
解决方案
方案一:调整uploadReadAheadSize阈值(推荐)
该方案无需修改身份验证的核心配置,兼容性最高:
- 打开IIS管理器,定位到目标站点
- 进入站点的配置编辑器功能
- 节路径选择
system.webServer/serverRuntime - 将
uploadReadAheadSize值修改为大于你站点最大允许上传大小的数值,比如当前php配置允许上传8M,就填写8388608(单位为字节) - 保存配置后重启站点即可生效
也可以通过管理员权限执行CMD命令修改,替换下方的你的站点名称为实际站点名:
%windir%\system32\inetsrv\appcmd set config "你的站点名称" /section:system.webServer/serverRuntime /uploadReadAheadSize:8388608 /commit:apphost
方案二:关闭Windows身份验证的内核模式
如果方案一不生效,可以尝试该方案:
- 打开IIS管理器,定位到目标站点,进入身份验证功能
- 右键点击「Windows身份验证」,选择「高级设置」
- 取消勾选「启用内核模式身份验证」,保存后重启站点即可生效
修改完成后上传大于100KB的文件测试,Chrome不会再弹出额外身份验证提示,功能表现和其他浏览器一致。
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

