HTTP协议---应用层协议,web核心
2019-08-14 23:01
1101 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44376490/article/details/99617782
HTTP协议—应用层协议,web核心
超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。默认端口号80;
http特点:
- 传输的过程是明文传输,就导致他安全性比较差;
- 是一种无状态的协议,在浏览器和服务器之间交互,单纯的http是无法保存某次登录的状态的,在下次登录时,依然会要求登录
- 是一种应用层协议
测试使用的工具:HTTPwatch
HTTP协议主要是请求和响应,协议的头和正文
认识URL
俗称网址:http://(协议方案名)user:pass(登录认证信息)@www.example.jp(服务器地址/域名):80(服务器端口号)/dir/index.htm(带层次的文件路径)?uid=1(查询字符串)#ch1(片段标识符)
urldecode:编码:url中特殊字符都有特殊含义,因此用户提交数据中若存在特殊字符,则需要转码(每个字节转换为16进制数字的字符串–为了表明数据经过了转码,因此在转码的数据前加上%)
urlencode:解码:在用户提交的数据中遇到%时,则对紧跟在其后的两个字符转换为数字,并且第一个数字左移4位加上第二个数字。
HTTP请求报文的格式:
使用fiddler工具来抓包,抓包就是在程序运行过程中截取一段内容方便我们解析和调试。
在启用抓包工具后,浏览器向服务器发送请求过程变成浏览器先向fiddler发送请求,工具再转发给服务器,服务器接收请求后返回也先返回给fiddler,再转发给浏览器。扮演了代理的角色。
- 首行:方法(GET/POST)+url+版本号(HTTP/(0.9/1.0/1.1/2))\r\n
- 协议头部header:请求的属性,‘:’分割的键值对,每组属性之间用\r\n进行间隔。
- 空行:\r\n; 协议头的结束标记
- 正文(body):空行后面的内容都是body,body允许为空字符串,如果body存在,通常会在header中有一个 Content-Length的属性来记录body的长度;通常情况下GET方法对应的请求没有body
POST方法对应的请求有body
HTTP响应报文的格式:
- 响应首行:协议版本号+响应状态码(以1开头/以2开头/…3/…4/…5)—(200/302/400/404/502/500)+状态码解释
- 协议头部header:请求的属性,‘:’分割的键值对,每组属性之间用\r\n进行间隔。
- 空行:\r\n; 协议头的结束标记
- 正文(body):空行后面的内容都是body,body允许为空字符串,如果body存在,通常会在header中有一个 Content-Length的属性来记录body的长度;如果服务器返回了一个HTML页面,那么HTML页面的内容就在body中。
状态码 | 解释 | 常用状态码 |
---|---|---|
1xx | 信息提供状态码 | 接收的请求正在处理 |
2xx | 肯定应请求答状态码 | 200:成功处理了请求 |
3xx | 重定向状态码(需要附加操作来完成请求) | 302:(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求 |
4xx | 客户端错误状态码–404(页面不存在) | 400:服务器不理解请求的语法 404:服务器找不到请求的网页 |
5xx | 服务器错误状态码 | 500:(服务器内部错误) 服务器遇到错误,无法完成请求 502:(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。 |
HTTP方法:
方法 | 说明 | 支持的HTTP协议版本(常用版本有两个:1.0/1.1) |
---|---|---|
GET | 获取资源 | 1.0,1.1 |
POST | 传输实体主体 | 1.0,1.1 |
PUT | 传输文件 | 1.0,1.1 |
HEAD | 获得报文首部 | 1.0,1.1 |
DELETE | 删除文件 | 1.0,1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的联系 | 1.0 |
UNLINK | 断开连接关系 | 1.0 |
HTTP请求:
- 常用请求: GET请求,获取由Request-URL所标识的资源
- POST请求,在Request-URL所标识的资源后附加新的数据
HTTP常见 Header:
- Content-Type: 数据类型(text/html等)
- Content-Length: Body的⻓度
- Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端⼝上;
- User-Agent: 声明⽤户的操作系统和浏览器版本信息;
- referer: 当前⻚⾯是从哪个⻚⾯跳转过来的;
- location: 搭配3xx状态码使用,告诉客户端接下来要去哪里访问;
- Cookie:用于在客户端存储少量信息,通常用于实现会话的功能。
HTTP-Session:
Session ID:一个会话的id号,32位长度的16进制的编码,一共有16^32次方个组合
相关文章推荐
- 从WebView到http协议
- Web开发基础之HTTP 协议
- Android--通过Http协议向web服务器发送XML数据和调用webService
- 高性能Web服务器Nginx的配置与部署研究(10)核心模块之HTTP模块Location相关指令
- 在用HttpWebRequest的时候,发现返回"基础连接已经关闭: 该服务器提交了 HTTP 协议冲突
- 简单介绍基于WEB开发的HTTP协议
- Android 网络框架_网络框架的核心Http协议
- 基于NIO实现客户端通过HTTP协议访问WEB站点
- http协议与web本质
- 利用socket自己实现基于HTTP协议的Web客户端
- httpwebrequest 服务器提交了协议冲突. section=responsestatusline
- linux命令:http服务协议,web服务器
- CentOS6.5 web-http协议之httpd篇之一
- Java-Web之Http协议
- HTTP协议:web应用的通信与控制
- http的协议解析与Web开发中的名词解释
- 简单介绍基于WEB开发的HTTP协议
- JavaWeb之HTTP协议
- WEB之http协议工作原理
- JavaWeb---总结(五)Http协议