IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP协议 -> 正文阅读

[网络协议]HTTP协议

目录

1. HTTP是什么?

2. HTTP工作过程

3. 抓包结果分析

?4. HTTP请求

4.1 请求地址URL

?4.2 认识请求方法类型

4.2.1 GET

4.2.2 POST

4.2.3 其他方法

4.3 请求报头

4.3.1 Host

4.3.2 Content - Length

4.3.3 Content - Type

4.3.4 User - Agent

4.3.5 Referer

4.3.6 Cookie

?4.4 请求正文

4.4.1??application/x-www-form-urlencoded

4.4.2??multipart/form-data

4.4.3??application/json

5. HTTP 响应

1. 首行

a. 版本号

b. 状态码

c. 状态描述信息

2. 响应报头

3. 空行

4. 返回主题


1. HTTP是什么?

HTTP :超文本传输协议。是一种流行的应用层协议,“超文本”不仅仅是指文本(html, css, JavaScript等),还可以使其他的资源,比如图片,视频,音频等二进制的数据。

2. HTTP工作过程

在浏览器中输入一个“网址”,浏览器会给对应服务器发送一个HTTP请求,服务器收到该请求之后,会返回一个HTTP相应。

?

3. 抓包结果分析

HTTP是一个文本格式的协议,可以通过Chrome开发者工具或者Fiddler进行抓包,分析HTTP请求/响应。

浏览器访问sougou.com时,会把HTTP请求现发给Fiddler,Fiddler再把请求转发给 sogou 的服务

器. 当 sogou 服务器返回数据时, Fiddler 拿到返回数据, 再把数据交给浏览器.

HTTP? 请求头:

1. 首行 : 请求的类型? 请求的地址? 请求的版本号

2. 请求头:??

? ? ? ? key :? value? ?

????????key :? value? ?

? ? ? ? ? ?.... ....

????????key :? value? ?

3. 空行:为了区分第二部分请求头和第四部分请求体。

4. 请求正文:用来存储开发者传递的参数和参数的值。

HTTP 响应头:?

?1. 状态行: HTTP 版本号? ? ?状态码? ?状态码的描述

?2. 响应行:?

????????key :? value

????????key :? value? ?

? ? ? ? ? ?.... ....

????????key :? value? ?

3. 空行

4. 响应正文

为什么HTTP报文中 要有“空行”的存在?

因为 HTTP 协议并没有规定报头部分的键值对有多少个. 空?就相当于是 "报头的结束标记", 或者是??"报头?和?正??之间的分隔符"。
HTTP 在传输层依赖 TCP 协议, TCP 是?向字节流的. 如果没有这个空?, 就会出现 "粘包问题".

??

?4. HTTP请求

4.1 请求地址URL

“网址”? 就是URL 。互联?上的每个?件都有?个唯?的URL,它包含的信息指出?件的位置以及浏览器应该怎么处理它。

URL 中可省略部分
????????● 协议名: 可以省略, 省略后默认为 http://
????????● ip 地址 / 域名: 在 HTML 中可以省略(?如 img, link, script, a 标签的 src 或者 href 属性). 省略后 。表示服务器的 ip / 域名与当前 HTML 所属的 ip / 域名?致.
??????? ● 端?号:?可以省略. 省略后如果是 http 协议, 端?号?动设为 80; 如果是 https 协议, 端??号?动?设为 443.
????????● 带层次的?件路径: 可以省略. 省略后相当于 / . 有些服务器会在发现 / 路径的时候?动访问 /index.html
????????● 查询字符串: 可以省略
????????● ?段标识: 可以省略

?4.2 认识请求方法类型

4.2.1 GET

GET 用于获取服务器上的资源。在浏览器上输入URL之后,浏览器就会发送出一个GET请求。(HTML中的?link, img, script 等标签, 也会触发 GET 请求

GET 请求类型特征: 长度限制。 HTTP协议标准是没有规定GET类型有长度限制。

(在URL中可以看到传递参数的值,不安全,但是POST不会看到要传递参数的值,POST比GET安全。)

4.2.2 POST

POST 用于提交用户输入的数据给服务器。(通过 HTML 中的 form 标签可以构造 POST 请求, 或者使? JavaScript 的 ajax 也可以构造 POST 请求.

总结:

(MS)GET 与 POST 区别

1. 语义不同,GET 获取数据(查询),POST 提交数据(非查询)。

2. body 非空不同,GET一般为空,POST一般不为空。

3. 幂等(多次请求得到的结果一样,就视为幂等)不同,GET 是幂等的(查询),POST 不幂等(添加插入操作)。

4. GET 通常是缓存的,POST 是不缓存的。

5. 最大值的限制不同,浏览器通常对GET有最大长度的限制,但是对POST没有最大长度限制。

6. 安全性不同,GET是把参数直接显示在URL上的,不安全。POST是放在body中,故相对安全。

4.2.3 其他方法

1. PUT?与 POST 相似,只是具有幂等特性,?般?于更新

2.?DELETE 删除服务器指定资源

3.?OPTIONS 返回服务器所?持的请求?法

4.?HEAD 类似于GET,只不过响应体不返回,只返回响应头

5.?TRACE 回显服务器端收到的请求

4.3 请求报头

4.3.1 Host

?表示服务器主机的地址和端口。

4.3.2 Content - Length

表示body中的数据长度。

验证数据在网络传递过程中有没有丢失。比如length 是7,通过网络传递到服务端,服务端拿到的数据长度是4,发生数据丢失。?

4.3.3 Content - Type

表示请求的body中的数据格式。

常见选项:

1.??application/x-www-form-urlencoded: form 表单提交的数据格式. 此时 body 的格式形如:

??????? ?title=test&content=hello

2.??multipart/form-data: form 表单提交的数据格式

通常?于提交图?/?件. body 格式形如:

????????????????
????????Content-Type:multipart/form-data; boundary=----
????????WebKitFormBoundaryrGKCBY7qhFd3TrwA
????????------WebKitFormBoundaryrGKCBY7qhFd3TrwA
????????Content-Disposition: form-data; name="text"
????????title
????????------WebKitFormBoundaryrGKCBY7qhFd3TrwA
????????Content-Disposition: form-data; name="file"; filename="chrome.png"
????????Content-Type: image/png
????????PNG ... content of chrome.png ...
????????------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
3.? application/json: 数据为 json 格式 . body 格式形如:
????????
????????{"username":"123456789","password":"xxxx","code":"jw7l"} (key : value)形式

4.3.4 User - Agent

表示浏览器 / 操作系统的属性?

4.3.5 Referer

表示这个页面是从哪个页面跳转过来的。比如:https://baidu.com/

但是直接在浏览器中输入URL,或者通过收藏夹访问页面是没有Referer的。

4.3.6 Cookie

Cookie就是,由服务器发送给客户端的特殊信息,这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求时都会带上这些特殊的信息。?

当用户使用浏览器访问一个网站的时候,用户输入个人信息给服务器,接着,服务器在向客户端回传响应的超文本的同时,也会发回这些个人信息(存放在Response Header 中)。当客户端收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置。当客户端再次向服务器发送请求时,都会把响应的Cookie再次发挥服务器,而这次Cookie信息存放在Request Header 中 。

通常,我们在网上的登录界面第一次输入个人信息及密码之后,点击“记住我” 这种选项之后,之后访问该网站就不需要输入个人信息及密码了。这个功能就是通过Cookie来完成的。


?4.4 请求正文

正?中的内容格式和 header 中的 Content-Type 密切相关。
下?可以通过抓包来观察这三种情况:

4.4.1??application/x-www-form-urlencoded

?

4.4.2??multipart/form-data

(文件)?

4.4.3??application/json

(前后端进行交互)

5. HTTP 响应

1. 首行

a. 版本号

b. 状态码

状态码表示访问?个??的结果.

200 OK? ? ? 表示访问成功。 ?

301 Moved Permanently 永久重定向?

302 Move temporarily? 临时重定向?

403 Forbidden? ? 访问被拒绝 ,没有权限访问

404 Not Found? ? ? ?没有找到资源 ,访问页面不存在

500 Internal Server Error? 服务器内部错误

503 网关错误?

504 Gateway Timeout? ?服务器负载较大(双十一),访问超时

? (MS 301、 302)

c. 状态描述信息

2. 响应报头

响应报头的基本格式和请求报头的格式基本?致.
类似于 Content-Type, Content-Length 等属性的含义也和请求中的含义?致.

??

Content-Type?:

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

? ? ? ? ? ? ? ?1.??text/html : body 数据格式是 HTML

? ? ? ? ? ? ? ? 2. text/css : body 数据格式是 CSS

? ? ? ? ? ? ? ? 3. application/javascript : body 数据格式是 JavaScript

? ? ? ? ? ? ? ? 4. application/json : body 数据格式是 JSON

3. 空行

4. 返回主题

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 12:14:59  更:2022-05-10 12:16:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:20:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码