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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Web~带你了解HTTP -> 正文阅读

[网络协议]Web~带你了解HTTP

目录

一.URL及协议

二.urlencode和urldecode

三.HTTP协议格式

四.HTTP的请求方法(get和post)

Q:Get和Post的区别?

五.HTTP的状态码

六.HTTP的头信息(Header)


一.URL及协议

  • url中的请求数据:请求路径?key1=value&key2=value2

1).网络数据传输,都需要使用同样的协议,双方约定好的统一规范(封装和解析数据格式规范)

????????协议:数据格式的约定

????????目标:学习http协议里面的格式,结合理论实操,进行程序调试

????????http协议格式本身+http数据(数据中包含自己的数据格式)

2).再次回顾URL

  1. 域名:基于DNS解析为IP
  2. IP:网络中定位主机的地址(逻辑地址)
  3. PORT:端口号,定位某个主机中唯一的进程(应用程序)
  4. http请求的访问路径:

????????????????服务路径定位资源

? ? ? ? ? ? ? ??url是全路径(绝对路径)

????????????????uri包含了url这种全路径,还包含相对路径,应用上下文是uri,服务路径是uri,两者加在一起也是uri,都是相对路径

特殊的注意事项:输入域名进行访问,其实是访问/这个路径的资源,/也有资源?

浏览器中,不输入端口号,是因为http协议的默认端口是80


二.urlencode和urldecode

?/ ? : 中文等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现。

比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。

转义的规则如下:

????????将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

"+" 被转义成了 "%2B"

urldecode就是urlencode的逆过程

urlencode工具

注:有时候显示的是中文,但是实际上都是%XY的形式进行传输的

  • 所以,项目路径尽量避免中文


三.HTTP协议格式

HTTP请求

  • 首行: [方法] + [url] + [版本]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个ContentLength属性来标识Body的长度;

?

HTTP响应

  • 首行: [版本号] + [状态码] + [状态码解释]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个ContentLength属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.

?

常见的Http工具

  1. 抓包工具:fiddler,charles,浏览器自带的开发者工具
  2. http请求模拟工具:postman

四.HTTP的请求方法(get和post)

Q:Get和Post的区别?

  • 1.请求形式

get的请求数据只能放在url中,post的数据可以放在url和请求体中

  • 2.传输数据的大小

get方法传输的数据量会受到限制,虽然在HTTP协议中没有硬性限制,但是特定的服务器和浏览器对url的长度有限制,而get是通过url传输数据的,所以会因此受到限制,一般传输数据量不超过2KB

post方法理论上没有限制,实际上post能传输的数据量取决于服务器的设置和内存大小

总的来说,get的传输数据量会受到限制,post的数据量则可以很大

  • 3.传输数据的类型

get方法只允许传输ascii码字符(就是想要传中文要转码),post方法则无限制,也允许二进制数据

  • 4.安全性

get传输的参数安全性低,因为数据会显示在url中,所有人可见,而且会被缓存和保留在浏览器历史中;post的数据则不会显示在url中,并且参数不会被缓存和保存在浏览器历史或者web服务日志中。

什么时候用get,什么时候用post呢?

1.有安全性要求的话,用post

2.如果有中文,用post好一点,用get由于只能传输ascii码,还要进行编码和解码的操作


五.HTTP的状态码

  • 这些状态码是服务端返回给用户端状态码,是服务端自己设置的,这些状态码的含义都是站在服务端的角色上看的,在用户端的角色上就不一定。比如200在服务端是正确的,但是客户端受到的数据不一定是他们想要的正确的数据

  • 400错误包括http协议格式,请求数据的格式,数据类型等错误

  • 服务端通过uri和(资源/服务)建立映射关系(大小写敏感),根据uri去找,找不到

  • uri已经映射到了,但是服务端提供的请求方法(如get,post方法),不包含客户端的请求的方法(如来了一个poooo方法)

  • 一般是服务端抛异常的时候


六.HTTP的头信息(Header)

  • Content-Type: 数据类型(text/html等)——(消息体body的格式,告诉对方该用什么方式解析)
  • Content-Length: Body的长度——(消息体的长度)
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的浏览器版本信息——(一般在请求体中,告诉服务端我客户端用的什么浏览器)
  • referer: 当前页面是从哪个页面跳转过来的;(在请求体中,告诉服务器当前页面是从哪里跳转过来的)
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:57:52  更:2022-03-12 17:58:15 
 
开发: 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年11日历 -2024/11/26 6:47:21-

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