使用ng-include加载页面时出现ERR_CONTENT_DECODING_FAILED错误求助
我之前在项目里也碰到过完全一样的错误,折腾了好一阵才搞定,给你几个亲测有效的排查方向:
彻底排查服务器压缩配置:
你在web.config里加了<urlCompression>配置,但可能没生效或者还有其他压缩模块在运行。比如IIS的「动态内容压缩」和「静态内容压缩」模块,需要确保在站点级别也禁用了,或者重启IIS让配置生效。另外,检查响应头里的Content-Encoding字段(Chrome按F12打开开发者工具→网络标签找view.html请求),如果还显示gzip或deflate,说明压缩没真正关掉。强制清除浏览器缓存:
这个坑我踩过!浏览器会缓存之前错误的压缩内容,就算服务器改了配置,还是会读旧缓存。直接按Ctrl+Shift+R强制刷新页面,或者去Chrome设置里清除所有缓存(隐私和安全→清除浏览数据,勾选「缓存的图片和文件」)。检查view.html的编码格式:
如果HTML文件带有BOM(字节顺序标记),或者编码不是UTF-8,压缩后很容易导致解码失败。用VS Code打开view.html,看右下角的编码标识,选择「UTF-8无BOM」格式重新保存试试。禁用ng-include的模板缓存:
Angular默认会缓存ng-include加载的模板,可能缓存了有问题的版本。可以给src加个随机参数强制刷新:<ng-include src="'view.html?v=' + Date.now()"></ng-include>这样每次请求都会带不同的参数,避免读取缓存的错误内容。
检查服务器返回的内容完整性:
有时候服务器返回的HTML内容不完整(比如截断了),压缩后也会解码失败。直接在浏览器地址栏打开https://example.com/view.html,看看能不能正常显示内容,如果打开就报错,那问题出在服务器端的文件本身或者配置,和ng-include关系不大。
内容的提问来源于stack exchange,提问作者MrProgram

