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

为什么浏览器请求<script>资源时Accept头用*/*而非application/javascript

浏览器请求脚本资源时Accept头为*/*的原因

这一行为完全是出于历史兼容性和实际业务逻辑的考量,核心原因有三点:

  • 历史存量站点的兼容包袱
    早期Web生态中JavaScript的MIME类型长期没有统一标准,不同站点、不同服务器配置的JS资源返回的MIME类型五花八门,包括text/javascript、application/x-javascript、application/javascript甚至text/plain都是非常常见的情况。如果浏览器在请求脚本时的Accept头里明确限定仅接受某几种JS相关类型,会导致大量历史站点的脚本资源被服务器返回406 Not Acceptable错误,完全无法正常加载。使用*/*可以规避这类兼容问题,保证所有存量站点的脚本都能正常请求。
  • 脚本加载的校验逻辑不依赖内容协商
    浏览器加载脚本资源时,不会靠Accept头和响应的Content-Type做严格的匹配校验:只要资源内容可以被JS引擎正常解析执行,哪怕响应头的Content-Type不符合官方标准,浏览器也会正常执行该脚本(当代浏览器的CORB等安全校验逻辑也不会和Accept头绑定)。这种情况下发送带有明确JS类型的Accept头做内容协商本身没有实际意义,直接使用*/*反而可以减少不必要的请求头体积和协商成本。
  • 避免触发服务器异常逻辑
    很多早期的动态服务会根据Accept头返回不同格式的内容,如果浏览器请求脚本时携带了明确的JS类型Accept头,可能会触发部分服务的异常分支逻辑,反而返回非预期的内容。使用*/*可以让服务器直接返回对应路径的默认资源内容,更符合加载脚本资源的预期。

内容的提问来源于stack exchange,提问作者Yongjian Wang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:51:01