You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS服务器静态JSON文件响应头异常及状态码问题

解决IIS托管JSON文件返回304且响应头不正确的问题

核心问题拆解

304状态码是浏览器在复用本地缓存的资源,所以不会返回新的响应头。要拿到200状态码+application/json响应头,得从缓存控制和MIME类型配置验证两方面下手。

1. 先验证MIME类型是否真的生效(临时调试)

直接按Ctrl+F5强制刷新浏览器,或者在请求里添加这个请求头:

Cache-Control: no-cache

这时候如果能拿到200状态码,且响应头里有application/json,说明MIME配置是对的,问题全在缓存策略上。

2. 调整IIS缓存策略,强制浏览器请求最新资源

  • 打开IIS管理器,找到你的站点,双击HTTP响应头。
  • 点击右侧的设置常用头:
    • 勾选启用HTTP缓存,可以设置一个较短的过期时间,或者直接设为立即过期;
    • 嫌麻烦的话,直接添加自定义响应头:点击添加,名称填Cache-Control,值填no-store, no-cache, must-revalidate,这会让浏览器每次都向服务器请求最新资源。

3. 再核对一遍JSON的MIME类型配置

别只说启用了,仔细检查细节:

  • 在站点或服务器级别,双击MIME类型;
  • 找到.json对应的条目,确保MIME类型是application/json,不是text/json这类错误配置;
  • 如果没找到该条目,点击添加,扩展名填.json,MIME类型填application/json,保存即可。

4. 检查静态压缩的影响(如果开启了压缩)

要是你开了IIS的静态内容压缩,得确认application/json在压缩列表里:

  • 打开站点的压缩功能,进入静态压缩的编辑界面,把application/json添加进去,否则压缩可能会篡改响应头。

5. 排查文件的单独配置

  • 右键你的JSON文件,查看属性里是否单独设置了HTTP头,避免文件级配置覆盖站点级配置;
  • 同时检查URL重写这类模块,有没有不小心修改了响应头。

总结

先通过强制刷新验证MIME配置是否生效,再调整缓存策略让浏览器每次都获取最新资源,同时确认MIME和压缩配置无误,就能拿到你要的200状态码和application/json响应头了。

内容的提问来源于stack exchange,提问作者Muruganandam M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:47:19