HTTP协议简介


本篇文章已同步更新至github仓库JavaSummary,欢迎star!

HTTP协议简介

1. 什么是协议

协议是指双方或多方,相互约定好,通信方都需要遵守的规则,叫协议。

2. HTTP协议

所谓HTTP协议(HyperText Transfer Protocol,超文本传输协议)就是客户端和服务器通信时需要遵守的规则。

3. 请求的HTTP协议格式

请求:客户端给服务器发送数据,分为GET请求和POST请求两种

响应:服务器给客户端回传数据

3.1 GET请求

GET /07_servlet/servlet1 HTTP/1.1
Host: localhost:8088
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
  1. 请求行

    (1)请求的方式 GET

    (2)请求的资源路径[+?+请求参数] /07_servlet/servlet1

    (3)请求的协议版本号 HTTP/1.1

  2. 请求头

    key:value 组成 不同的键值对,表示不同的含义

    key含义
    Host表示请求的服务器ip和端口号
    Connection告诉服务器请求连接如何处理
    keep-alive:告诉服务器回传数据不要马上关闭,保持一小段时间的连接;
    closed:马上关闭
    User-Agent浏览器信息
    Accept告诉服务器,客户端可以接收的数据类型
    Accept-Encoding告诉服务器,客户端可以接收的数据编码(压缩)格式
    Accept-Language告诉服务器,客户端可以接收的语言类型

3.2 POST请求

POST /07_servlet/parameterServlet HTTP/1.1
Host: localhost:8088
Connection: keep-alive
Content-Length: 35
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://localhost:8088/07_servlet/form.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

username=y11&password=123&hobby=cpp
  1. 请求行

    (1)请求的方式 POST

    (2)请求的资源路径[+?+请求参数] /07_servlet/parameterServlet

    (3)请求的协议版本号 HTTP/1.1

  2. 请求头

    key:value 组成 不同的键值对,表示不同的含义

    key含义
    Content-Length表示发送的数据长度
    Cache-Control表示如何控制缓存
    Referer表示请求发起时,浏览器地址栏中的地址(从哪来)
    Content-Type表示发送的数据类型
    application/x-www-form-urlencoded:
    表示提交的数据格式是:name=value&name=value,然后对其进行url编码,
    url编码是把非英文内容转换为:%xx%xx)
    multipart/form-data
    表示以多段的形式提交数据给服务器(以流的形式提交,用于上传)

空行

  1. 请求体

    就是发送给服务器的数据:username=y11&password=123&hobby=cpp

4. 响应的HTTP协议格式

4.1 响应格式

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Date: Thu, 18 Feb 2021 11:04:21 GMT
Accept-Ranges: bytes
ETag: W/"611-1613640379836"
Last-Modified: Thu, 18 Feb 2021 09:26:19 GMT
Content-Type: text/html
Content-Length: 611

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="http://localhost:8088/07_servlet/parameterServlet" method="post">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="password" name="password"><br/>
        兴趣爱好:<input type="checkbox" name="hobby" value="cpp">C++
                <input type="checkbox" name="hobby" value="Java">Java
                <input type="checkbox" name="hobby" value="js">JavaScript<br/>
        <input type="submit">
    </form>
</body>
</html>
  1. 响应行

    (1)响应的协议和版本号 HTTP/1.1

    (2)响应状态码 200

    (3)响应状态描述符 OK

  2. 响应头

    key : value 不同的响应头,表示不同的含义

    key含义
    Server表示服务器的信息
    Content-Type表示响应体的数据类型
    Content-Length响应体的长度
    Date请求响应的时间(格林时间)

空行

  1. 响应体:回传给客户端的数据

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="http://localhost:8088/07_servlet/parameterServlet" method="post">
            用户名:<input type="text" name="username"><br/>
            密码:<input type="password" name="password"><br/>
            兴趣爱好:<input type="checkbox" name="hobby" value="cpp">C++
                    <input type="checkbox" name="hobby" value="Java">Java
                    <input type="checkbox" name="hobby" value="js">JavaScript<br/>
            <input type="submit">
        </form>
    </body>
    </html>
    

4.2 常用的响应码说明

响应码含义
200请求成功
302请求重定向
404请求服务器已经收到了,但是请求的数据不存在(请求地址错误)
500服务器已经收到请求,但是服务器内部错误(代码错误)

5. MIME类型说明

MIME(Multipurpose Internet Mail Extensions, 多功能Internet邮件扩充服务)是HHTP协议中的数据类型。

MIME类型的格式是:大类型/小类型,并与某一种文件的扩展名相对应。

文件MIME类型格式
超文本标记语言.html,.htmtext/html
普通文本.txttext/plain
RTF文本.rtfapplication/rtf
GIF图形.gifimage/gif
JPEG图形.jpeg,.jpgimage/jpeg
au声音文件.auaudio/basic
MIDI音乐文件.mid,.midiaudio/midi, audio/x-midi
RealAudio音乐文件.ra,.ramaudio/x-pn-realaudio
MPEG文件.mpg,.mpegvideo/mpeg
AVI文件.avivideo/x-msvideo
GZIP文件.gzapplication/x-gzip
TAR文件.tarapplication/x-tar
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xylitolz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值