HTTP 入门与基本使用(从小白的成神之路)

本文深入讲解HTTP协议的基础知识,包括其概念、特点、历史版本、请求与响应消息格式,以及GET与POST请求方式的对比。适合初学者快速掌握HTTP的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP 概念

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

传输协议:
定义了,客户端和服务器端通讯时,发送数据的格式

历史版本:

  1. 1.0版本:每次请求响应都会建立新的链接
    
  2. 1.1版本:复用链接
    

特点

  1. 基于TCP/IP的高级协议

  2. 默认端口是 80

  3. 基于请求/响应模型:一次请求面对一次响应

  4. 无状态的:每次请求之间相互独立,不能交互数据

    无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

  5. HTTP是无连接: 无连接的含义是限制每次连接只处理一个请求

在这里插入图片描述

请求方式

1 .HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。

2 . HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

请求方式详解

1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

常用的请求方式为 GET 和 POST,他们的优缺点

GET:
1.请求参数在请求行,在url 后面
2. 请求 url长度有限制
3. 不太安全
POST:
1 请求参数在请求体中。
2 请求url 长度没有限制
3 相对安全

请求消息数据格式

客户端 发给服务器端的数据

1. 请求行
请求方式  请求 url  请求协议/版本

例如: GET /login.html HTTP/1.1

2. 请求头

. 请求头名称:请求头值

Host: www.test.com/ //请求的目标域名和端口号
Origin: http://localhost:8081/ //请求的来源域名和端口号 (跨域请求时,浏览器会自动带上这个头信息)
Referer: https:/localhost:8081/link?query=xxxxx //请求资源的完整URI
User-Agent //浏览器信息
Cookie: //当前域名下的Cookie
Accept: text/html,image/apng //代表客户端希望接受的数据类型是html或者是png图片类型
Accept-Encoding: gzip, deflate //代表客户端能支持gzip和deflate格式的压缩
Accept-Language: zh-CN,zh;q=0.9 //代表客户端可以支持语言zh-CN或者zh(值得一提的是q(0~1)是优先级权重的意思,不写默认为1,这里zh-CN是1,zh是0.9)
Connection: keep-alive //告诉服务器,客户端需要的tcp连接是一个长连接
If-None-Match //如果内容未改变返回304代码,对应Etag
If-Modified-Since //对应last-midified,未被修改则返回304代码

常见的请求头:
  1. User-Agent : 浏览器信息
    作用:
    获取不同浏览器 可以解决兼容问题
  2. Host: 请求的目标域名和端口号
  3. Referer: 请求资源的完整URI https:/localhost:8081/link?query=xxxxx
    作用:
    1 防盗链接
    2 统计工作
3. 请求空行

就是一个空行,用于分割作用,分割请求头和请求体

4. 请求体

GET方式没有请求体
POST 请求体
参数名字=内容 例如 username=张三

响应消息数据格式

服务器端发给客户端的数据

1.响应行
1 组成

请求协议/版本 + 响应的状态码 + 状态描述
例如: HTTP/2.0 200 ok

2 响应状态码
  1 状态码都是三位数字
  2 分类
   1.   1xx: 服务器接收客户端消息,但是没有接收完成,等待一段时间后,发送 1xx 状态码询问客户端是否继续发送消息
   2.    2xx :成功。一般常用 200
   3.    3xx : 重定向。 代表 :302 (重定向),304 (访问缓存)
   4.    4xx : 客户端错误.  代表 : 404(请求路径没有对应的资源)
                        405 请求方式没有对应的  doxx方法(后台方法)
   5.   5xx  : 服务端错误.  代表 : 500  服务器内部出现异常。
2.响应头
1. 格式
     头名称 : 值
2常见的响应头:
 1. Content-Type :客户端本次响应体数据格式以及编码格式. 
          Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。
3.响应空行

就是一个空行,用于分割作用,分割响应头和响应体

4.响应体

传输的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值