chrome拿到页面但不渲染是怎么回事?

今天访问站点突然遇到个迷惑的行为,具体是:
我用 chrome 访问服务器上的一个页面,请求成功返回页面数据,但是 chrome 没有将页面渲染出来而是把页面数据当成字符串渲染了。我跑到 IE11、edge、firefox 上访问这个页面,页面能成功显示。我又多试了一下,把返回的页面数据复制下来创建了一个本地 html,然后用 nginx 给它做服务器,再用 chrome 本地 localhost 方式去访问这个 html,页面居然被渲染出来了(只是没有样式和 js,但是结构有)。
所以问题是:什么原因导致 chrome 的这两种渲染区别?

看上去明显跟后端(java 写的)和浏览器有关系,但是我对后端不熟悉,希望有大佬能够解答一下。

下边是相关访问信息:
服务器地址为:a.com
访问的 html 页面地址为:a.com/some.html
请求头部分信息:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

服务器返回了 some.html 这个页面的数据,仅展示 meta 信息,并没有添加限制浏览器的信息。

<!DOCTYPE html>
<html>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <!-- 避免IE使用兼容模式 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
...</html>
阅读 7k
2 个回答

响应头的content-type不正确

去开发者工具看下 Network-->响应的请求-->Response的返回数据。理论上这是原始数据。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题