IIS 10返回201状态码时响应不压缩问题的解决方案问询
根因说明
IIS 10 调整了默认的压缩规则,仅对状态码为200的响应执行压缩操作,和IIS 6/7.5默认包含201状态码的配置规则不同,这是版本默认配置差异导致的问题。
可行解决方案
方案1:全局配置(对服务器所有站点生效)
- 以管理员身份运行命令提示符,执行以下命令添加201状态码的压缩许可:
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+"doCompressionForHttpStatusCodes.[statusCode='201',subStatusCode='*']" /commit:apphost - 执行
iisreset重启IIS服务使配置生效。
方案2:站点级配置(仅对指定站点生效)
在对应站点的web.config文件中添加如下配置节点:
<system.webServer> <httpCompression> <doCompressionForHttpStatusCodes> <add statusCode="201" subStatusCode="*" /> </doCompressionForHttpStatusCodes> <!-- 如需压缩其他非200状态码的响应,可在此处追加对应statusCode配置 --> </httpCompression> </system.webServer>
保存配置后重启站点即可生效,无需修改全局服务器配置。
注意事项
- 需确认你要压缩的201响应对应的MIME类型已被加入压缩列表:动态响应(如接口返回的JSON/XML)需在
dynamicTypes节点中配置,静态资源需在staticTypes节点中配置,且对应项的enabled属性为true。 - 如果配置后仍不生效,可检查请求头是否包含
Accept-Encoding: gzip, deflate, br,IIS只会在客户端明确声明支持压缩时返回压缩后的响应。
内容的提问来源于stack exchange,提问作者G Aggrey
相关产品推荐
相关产品推荐

