HTTP协议
来源:互联网 发布:笔记软件 编辑:程序博客网 时间:2024/06/17 02:11
基础概念
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP是基于请求-响应模式的、无状态的、应用层,规定了浏览器和服务器之间的通信规范,通常用TCP连接方式。
HTTP 1.0、HTTP 1.1和HTTPS
- HTTP1.0
- 浏览器和服务器使用短连接,响应玩,立即断开
- 请求的过程:3次握手,请求,响应,断开连接
- HTTP不保存连接,好处:服务器可以处理更多的连接,但是每次建立连接会降低处理速度。
- HTTP1.1
- 引入持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明
Connection: keep-alive
- 客户端和服务器发现对方一段时间没有活动,就可以自动关闭连接。不过规范的做法是客户端最后一个请求时,发送
Connection: close
,明确要求服务器关闭TCP连接
- 引入持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明
- HTTPS
- HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
HTTP协议中的URL
- URL(UniformResourceLocator):同一资源定位符,一种具体的URI,可以用来标识一个资源,而且指明如何locate这个资源。是互联网上用来标识某一处资源的地址
- URI(Uniform Resource Identifiers, URI):统一资源标识符,通过名字来标识资源
- URL格式:
- host: 代表Internet主机域名或IP地址
- port: 端口号,缺省端口80(HTTPS缺省443)
- abs_path : 请求资源的URI,如果没有,填 “/”,通常浏览器会帮我们自动完成。
http://host[":"port][abs_path]
HTTP之请求消息Request
请求报文格式
- HTTP请求包含三部分:请求行、消息报头、请求正文
- 请求行:请求方法,要访问的资源,HTTP版本号
- 实体头:
- HOST:请求的目的地
- User-Agent:服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等
- 空行:必须,头部结束标志
- 请求正文:任意数据
- SP代表空格、CRLF代表换行
请求方法
- GET 请求获取Request-URI所标识的资源
- POST 在Request-URI所标识的资源后附加新的数据,常用于提交表单。
- PUT 请求服务器存储一个资源,并用Request-URI作为其标识
- DELETE 请求服务器删除Request-URI所标识的资源
- HEAD 请求获取由Request-URI所标识的资源的响应消息报头
- TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
- CONNECT 保留将来使用
- OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
POST和PUT的区别????
POST方法用于请求源服务器接收请求中的实体作为资源的一个新的从属物(创建)
PUT方法请求服务器把请求里的实体存储在请求URI标识下(更新)
如果请求URI指定的资源已经在源服务器上,则请求里的实体应该被当作是源服务器关于此URI所指定资源实体的最新修改版本
幂等性
一个幂等操作的特点就是其任意多次执行所产生的影响均与依次一次执行的影响相同
POST不是幂等的,而PUT具有幂等性
HTTP之响应消息Response
响应报文格式
- 三部分:响应行、实体头、响应体
- 响应行:版本号、status code 表示响应的状态码,description是状态码的文本描述信息
响应码
200段是成功;300段需要对请求做进一步的处理;400段表示客户端请求错误;500段是服务器的错误
常见响应码:
* “200” : OK
* “302” : Found 重定向.
* “400” : Bad Request 错误请求,发出错误的不符合Http协议的请求
* “403” : Forbidden 禁止
* “404” : Not Found 未找到。演示访问一个不存在的页面看报文
* “500” : Internal Server Error 服务器内部错误。演示页面抛出异常。
* “503” : Service Unavailable。一般是访问人数过多。
HTTP消息报头
HTTP消息报头分4类:普通报头、请求报头、响应报头、实体报头
每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。
普通报头
应用于所有请求和响应消息且和请求体与响应体无关的信息就存放在普通报头中。
请求报头
客户端向服务器端传递请求的附加信息以及客户端自身的信息存放在请求报头
响应报头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
实体报头
请求和响应消息都可以传送一个实体。
参考:
http协议知识整理
HTTP协议详解(真的很经典)
HTTP 协议入门
关于HTTP协议,一篇就够了
HTTP PUT方法和POST方法的区别
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议。。。
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- http协议
- HTTP协议
- 前进杀蝙蝠--简单递归
- 【Python】dlib实现视频中人脸68特征点提取
- 【C++】模拟实现STL中的list
- c++之旅———开始
- leetcode 8. String to Integer (atoi)
- HTTP协议
- 使用脚本自动化安装MySQL/MariaDB
- JSON解析
- python 学习手册重点
- struts2整合freemarker(一)
- 【NOIP2017提高A组集训10.21】Fantasy
- 用的VS,写的字符串的copy 、 cmp 、cat, 在VC环境下运行没有终止,在VS下就终止了
- oracle db link的查看创建与删除
- c语言笔记