【JavaEE网络】HTTP响应详解:状态码、报头与正文的全面解析

目录

        • HTTP响应(Response)
          • [认识 "状态码" (status code)](#认识 "状态码" (status code))
          • [认识响应 "报头"(header)](#认识响应 “报头”(header))
          • [认识响应 "正文"(body)](#认识响应 “正文”(body))

HTTP响应(Response)

响应:

  1. 首行
  2. 响应头
  3. 空行
  4. 正文
认识 "状态码" (status code)

响应的首行和请求的相比差异就比较大了

状态码表示访问一个页面的结果。(是访问成功,还是失败,还是其他的一些情况...)

以下为常见的状态码

200 OK (成功)

这是一个最常见的状态码, 表示访问成功

抓包抓到的大部分结果都是 200

404 Not Found (你要访问的资源不存在)

没有找到资源.

浏览器输入一个 URL, 目的就是为了访问对方服务器上的一个资源. 如果这个 URL 标识的资源不存在, 那么就会出现 404

例如, 在浏览器中输入 www.sogou.com/index.html , 此时就在尝试访问 sogou 上的/index.html 这个资源.

如果输入正确, 则可以正确访问到. 但是如果输入错误, 比如 www.sogou.com/index2.html , 就会看到 404 这样的响应.

403 Forbidden (没有权限)

表示访问被拒绝. 有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问). 如果用户没有登陆直接访问, 就容易见到 403.

405 Method Not Allowed

前面我们已经学习了 HTTP 中所支持的方法, 有 GET, POST, PUT, DELETE 等.

但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其他的方法).

500 Internal Server Error

服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码.

咱们平时常用的网站很少会出现 500 (但是偶尔也能看到).

502 Bad Gateway

表示Internet上的一台服务器收到来自另一个服务器的无效响应,也就是指网关错误,无效网关;在互联网中表示一种网络错误。表示web浏览器中给出的页面反馈。

504 Gateway Timeout (服务器响应超时)

当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况.

这种情况在双十一等 "秒杀" 场景中容易出现, 平时不太容易见到.

302 Move temporarily (重定向)

临时重定向,跳转到其他页面上

理解 "重定向"

就相当于手机号码中的 "呼叫转移" 功能.

比如我本来的手机号是 186-1234-5678, 后来换了个新号码 135-1234-5678, 那么不需要让我的朋友知道新号码,

只要我去办理一个呼叫转移业务, 其他人拨打 186-1234-5678 , 就会自动转移到 135-1234-5678 上.

在登陆页面中经常会见到 302. 用于实现登陆成功后自动跳转到主页.

响应报文的 header 部分会包含一个 Location 字段, 表示要跳转到哪个页面

301 Moved Permanently

永久重定向. 当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址.

301 也是通过 Location 字段来表示要重定向到的新地址

状态码小结

认识响应 "报头"(header)

响应报头的基本格式和请求报头的格式基本一致.

类似于 Content-Type , Content-Length 等属性的含义也和请求中的含义一致.

Content-Type

响应中的 Content-Type 常见取值有以下几种:

  • text/html: body 数据格式是 HTML
  • text/css: body 数据格式是 CSS
  • application/javascript: body 数据格式是 JavaScript
  • application/json : body 数据格式是 JSON
认识响应 "正文"(body)

正文的具体格式取决于 Content-Type. 观察上面几个抓包结果中的响应部分.

  1. text/html

    Server: nginx/1.17.3
    Date: Thu, 10 Jun 2021 07:25:09 GMT
    Content-Type: text/html; charset=utf-8
    Last-Modified: Thu, 13 May 2021 09:01:26 GMT
    Connection: keep-alive
    ETag: W/"609ceae6-3206"
    Content-Length: 12806

    <!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible

    content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,userscalable=no"><link rel=icon href=/favicon.ico><title id=bodyTitle>比特教务管理系统

    </title><link href=https://cdn.bootcss.com/jquerydatetimepicker/2.5.20/jquery.datetimepicker.css rel=stylesheet><script src=https://cdn.bootcss.com/highlight.js/9.1.0/highlight.min.js></script><script src=https://cdn.bootcss.com/highlightjs-line-numbers.js/2.5.0/highlightjs-linenumbers.min.js></script><style>html, body, #app { height: 100%; margin: 0px; padding: 0px; } .chromeframe { margin: 0.2em 0; background: #ccc; color: #000; padding: 0.2em 0; } #loader-wrapper { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 999999; } ......
  2. text/css

    HTTP/1.1 200 OK
    Server: nginx/1.17.3
    Date: Thu, 10 Jun 2021 07:25:09 GMT
    Content-Type: text/css
    Last-Modified: Thu, 13 May 2021 09:01:26 GMT
    Connection: keep-alive
    ETag: W/"609ceae6-3cfbe"
    Content-Length: 249790
    @font-face{font-family:element-icons;src:url(../../static/fonts/elementicons.535877f5.woff) format("woff"),url(../../static/fonts/elementicons.732389de.ttf) format("truetype");font-weight:400;font-style:normal}
    [class*=" el-icon-"],
    ......

  3. application/javascript

    HTTP/1.1 200 OK
    Server: nginx/1.17.3
    Date: Thu, 10 Jun 2021 07:25:09 GMT
    Content-Type: application/javascript; charset=utf-8
    Last-Modified: Thu, 13 May 2021 09:01:26 GMT
    Connection: keep-alive
    ETag: W/"609ceae6-427d4"
    Content-Length: 272340
    (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["app"],
    {0:function(t,e,n){t.exports=n("56d7")},"00b3":function(t,e,n){},"
    ......

  4. application/json

    HTTP/1.1 200
    Server: nginx/1.17.3
    Date: Thu, 10 Jun 2021 07:25:10 GMT
    Content-Type: application/json;charset=UTF-8
    Connection: keep-alive
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    Pragma: no-cache
    Expires: 0
    vary: accept-encoding
    Content-Length: 12268
    {"msg":"操作成功","code":200,"permissions":[] }

相关推荐
WTT001126 分钟前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
苹果醋334 分钟前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
Hello.Reader1 小时前
深入解析 Apache APISIX
java·apache
杨德杰1 小时前
QT网络(一):主机信息查询
网络·qt
菠萝蚊鸭1 小时前
Dhatim FastExcel 读写 Excel 文件
java·excel·fastexcel
旭东怪2 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
∝请叫*我简单先生2 小时前
java如何使用poi-tl在word模板里渲染多张图片
java·后端·poi-tl
yang_shengy2 小时前
【JavaEE】网络(6)
服务器·网络·http·https
ssr——ssss2 小时前
SSM-期末项目 - 基于SSM的宠物信息管理系统
java·ssm