Http协议简介

简介: Http协议简介

一、简介

1、Http: HyperText Transfer Protocol 超文本传输协议

协议:双方或多方遵守的 约定

Http协议是 客户端和服务端之间通讯时发送数据需要遵守的协议

http传输的数据叫做报文


2、http特点:

(1)基于TCP协议,面向连接,安全

(2)基于请求-响应模型。

一次请求对应一次响应。

(3)http协议是无状态的。

对于事务处理没有记忆能力。每次请求之间是独立的,不同请求之间不能共享数据。java中通过会话技术(cookie、session)来解决这个问题


二、请求方式

http分为GET和POST两种请求方式

GET和POST两种请求的区别:

(1)GET请求参数在请求行中,POST的请求参数在请求体中

(2)GET请求参数有条数限制,POST的请求参数没有限制


1、GET:包括请求行和请求头

(1)请求行:

a、请求方式 GET

b、请求路径 /api/projectResource/queryAllMenuForUser/7

c、请求协议的版本 HTTP/1.1

(2)请求头:

Accept: 告诉服务器,浏览器可以接收的资源类型

Accept-Encoding: 浏览器可以支持的压缩类型

Accept-Language: 接收的语言

Connection: 连接状态,包括keep-alive,closed

Host: ip和端口号

Referer: 发送请求时浏览器的地址

User-Agent: 浏览器信息


例:


// 请求行
GET /api/projectResource/queryAllMenuForUser/7 HTTP/1.1
// 请求头
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Accept-Version: 1.0.0
Auth-Type: project
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRoX3R5cGUiOiJwcm9qZWN0Iiwicm9sZSI6IumhueebrueuoeeQhuWRmCzns7vnu5_nrqHnkIblkZgiLCJjb2RlIjoiMjAwIiwidXNlcl9uYW1lIjoienB4IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV_ns7vnu5_nrqHnkIblkZgiLCJST0xFX-mhueebrueuoeeQhuWRmCJdLCJjbGllbnRfaWQiOiI2MDBseV9hcGlfY2xpZW50IiwiYXVkIjpbIjYwMGx5X2FwaV9yZXNvdXJjZSJdLCJ1c2VyX2lkIjo3LCJzaWduX2NvZGUiOiJ6a2duIiwic2NvcGUiOlsicmVhZCIsIndyaXRlIl0sInVzZXJfcmVhbG5hbWUiOiLlvKDpuY_ovakiLCJsb2dvIjoiIiwiZXhwIjoxNjUyMTU1ODYzLCJqdGkiOiIzZjFiMjYyMC0zNDFjLTQxMzEtOTA0NS01MTc2ZThlNzc4NGYifQ.A35WDYEZjuO0-wN73hN0qac2wiEGCecgjKVl5ldihs2iGrq6gHlXQSoj2sfP-fAn9caeSm_KLNbmje3d5Zh1QkXzbTVOw6yw9FS4AvmavTk6VD9aXcekW-zqFE2LFqJdFdQEX-ds9e44ItC3Z7vVGeBvzuhHi0oC89T0jliGDVbr7kEc2rGfNjSLbifhyQZjVv9bjFQvOny3dKaHBfCx1fSniZDNWx11nrzaWRq6dtdKs_ErFQ368Z8tLg3jTzjX9JCF0ZSuSHrPAOz657MEnMDxcu6qATPysLZjbjo0a_OCzRmjisiT28v80OL9cvQB89IgUAvzkw1A3bPugPk_gA
Connection: keep-alive
Host: 124.70.89.33
Referer: http://124.70.89.33/600ly-feoms/device-manage/areaDevice/manage
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36

2、POST:包括请求行、请求头、请求空行、请求体

(1)请求行:

a、请求方式 POST

b、请求路径 /api/projectUserRole/setProjectAdmin

c、请求协议的版本 HTTP/1.1

(2)请求头:

Accept: 告诉服务器,可以接收的类型

Accept-Encoding: 接收的编码格式

Accept-Language: 接收的语言

Connection: 连接状态,包括keep-alive,closed

Content-Length: 请求数据的长度

Content-Type: 请求数据的类型

Host: ip和端口号

Referer: 发送请求时浏览器的地址

User-Agent: 浏览器信息

(3)请求空行

(4)请求体:signCode=600ly&userId=22


例:

POST /api/projectUserRole/setProjectAdmin HTTP/1.1
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: keep-alive
Content-Length: 24
Content-Type: application/x-www-form-urlencoded
Host: 129.20.86.53
Origin: http://129.20.86.53
Referer: http://129.20.86.53/permission/user
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
signCode=600ly&userId=22

三、HTTP协议的响应格式

(1)响应行

a、响应协议

b、响应状态码

c、响应标识

(2)响应头

Server: 服务器

Date: 格林尼治标准时间

Content-Type: 响应数据类型

Transfer-Encoding: chunked

Connection: 连接状态

Content-Encoding: 数据编码格式

(3)响应空行

(4)响应体

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 09 May 2022 09:43:38 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
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
X-Frame-Options: DENY
Content-Encoding: gzip
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Vary: origin,access-control-request-method,access-control-request-headers,accept-encoding
{
  "code" : "200",
  "message" : "success",
  "data" : {
    "total" : 2,
    "totalPage" : 1,
    "rows" : [ {
      "id" : 200300,
      "devGroupId" : "90526686-4182-fdc4-9264-2df6acc3185a",
      "authorityName" : "只读",
      "sortValue" : 0,
      "status" : "1"
    }, {
      "id" : 200301,
      "devGroupId" : "726d7493-d87a-400d-3021-0f4eb00675a8",
      "authorityName" : "只读",
      "sortValue" : 0,
      "status" : "1"
    }]
  }
}

响应码:

2xx:请求成功

3xx:请求重定向

4xx:客户端错误

404:服务器已经接收到请求,但是请求地址不存在

5xx:服务器已经接收到请求,服务器代码出现错误


23.pngimage.png

MIME:Multipurpose Internet Mail Extensions 多功能因特网邮件扩充服务。格式为 大类型/小类型

25.png



相关文章
|
2月前
|
缓存 负载均衡 网络协议
HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践
面向企业网络与数据团队的代理协议选型与治理指南,基于流量特征选择HTTP或SOCKS5协议,通过多协议网关统一出站,结合托管网络降低复杂度,实现稳定吞吐、可预测时延与合规落地。
|
4月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
550 2
|
4月前
|
应用服务中间件
HTTP协议中常见的状态码
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类,常见状态码包括:101(请求已接受)、200(请求成功)、302(重定向)、400(请求错误)、401(未认证)、403(无权限)、404(资源不存在),以及500(服务器错误)、502(网关错误)、503(服务不可用)、504(网关超时)等。
166 0
|
4月前
|
网络协议 安全 网络安全
什么是HTTP协议
HTTP协议是超文本传输协议,基于TCP,规定了客户端与服务器端通信规则,但数据以明文传输,安全性低。HTTPS则通过SSL加密保障数据安全。两者默认端口不同,HTTP为80,HTTPS为443。HTTPS安全性更高,但消耗更多服务器资源。
198 0
|
4月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
356 0
|
5月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
573 1
|
4月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
474 0
|
5月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
512 0
|
5月前
HTTP协议中常见的状态码 ?
HTTP协议状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器错误)。
465 0