1、HTTP
即超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,它是用作客户端和服务器之间的请求
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
2、方法分类
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 用于请求服务器发送某个资源。GET 请求不应该对服务器上的资源做出任何更改,并且应该是幂等的(即多次重复的请求应该产生相同的结果)。例如,当你在浏览器中输入 URL 地址时,浏览器会发送一个 GET 请求来获取该 URL 对应的网页。 |
2 | HEAD | 类类似于 GET 请求,但服务器不返回请求的资源主体,只返回响应头。HEAD 请求通常用于获取资源的元信息,如资源的大小、类型等,而不需要获取资源的实际内容。 |
3 | POST | 用于向服务器提交数据,通常用于提交表单或上传文件。POST 请求可能会导致服务器上的状态更改,并且不一定是幂等的。例如,在提交注册表单时,浏览器通常会发送一个 POST 请求,将用户提供的信息发送到服务器进行处理。 |
4 | PUT | 用于向服务器上传资源,通常用于更新已存在的资源或创建新的资源。PUT 请求应该是幂等的,即多次执行相同的 PUT 请求应该产生相同的结果。 |
5 | DELETE | 用于请求服务器删除指定的资源。DELETE 请求应该是幂等的,即多次执行相同的 DELETE 请求应该产生相同的结果。 |
6 | CONNECT | 用于建立到服务器上指定端口的隧道,通常用于代理服务器。 |
7 | OPTIONS | 用于请求服务器返回支持的 HTTP 方法和其他选项。例如,客户端可以发送 OPTIONS 请求来确定服务器支持哪些 CORS(跨域资源共享)策略。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 用于在请求-响应链上的每个节点获取传输路径。TRACE 请求通常用于调试和测试,以查看请求在经过各种代理服务器和中间件时如何被修改。 |
(1)GET 获取资源
- GET 方法用来请求访问已被URI识别的资源,指定的资源经服务器端解析后返回响应内容;
- 也就是说,如果请求的资源是文本,那就保持原样返回;如果是 CGI(Common Gateway Interface,通用网关接口)那样的程序,则返回经过执行后的输出结果;
请求 | GET/index.html HTTP/1.1 Host:www.myindex.jp |
---|---|
响应 | 返回index.html的页面资源 |
(2)POST 上传实体主体
- 主要向指定资源提交数据进行处理请求(例如提交表单);
- 数据被包含在请求附件中;
- POST请求可能会导致新资源的建立和已有资源的修改
请求 | POST/submit.cgi HTTP/1.1 Host:www.myindex.jp Content-Length:150(150字节的数据) |
---|---|
响应 | 返回接收submit.cgi数据的处理结果 |
(3)HEAD 获得报文首部
- 获得报文首部;
- 类似GET,只是不返回报文主体部分;
- 用于确认URI的有效性及资源更新的日期时间等;
(4)PUT 上传文件
- PUT方法用来上传文件;
- 就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置;
- 但鉴于 HTTP/1.1 的 PUT 方法自身不带验证机制,任何人都可以上传文件 , 存在安全性问题,因此一般的Web网站不使用该方法;
- 若 配合 Web 应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer,表征状态转移)标准的同类 Web 网站,就可能会开放使用 PUT 方法。
请求 | PUT/example.html HTTP/1.1 Host:www.myindex.jp Content-Type:text/html Content-Length:150(150字节的数据) |
---|---|
响应 | 响应返回状态码204 No Content(比如:该html已存在于服务器上) |
(5)DELETE 删除文件
- DELETE用来删除文件,是与 PUT 相反的方法;
- DELETE 方法按 请求 URI 删除指定的资源;
- 由于HTTP/1.1 的 DELETE 方法本身和 PUT 方法一样不带验证机制,所以一般的Web网站也不使用 DELETE 方法;
- 但是当配合 Web 应用 程序的验证机制,或遵守 REST 标准时还是有可能会开放使用的;
请求 | DELETE/example.html HTTP/1.1 Host:www.myindex.jp |
---|---|
响应 | 响应返回码204 No Content(比如:该html已从该服务器上删除) |
(6)OPTIONS 询问支持的方法
查询针对请求 URI 指定的资源支持的方法。
请求 | OPTIONS * HTTP/1.1 Host:www.myindex.jp |
---|---|
响应 | HTTP/1.1 200 OK Allow:GET,POST,HEAD,OPTIONS(返回服务器支持的方法) |
3、GET与POST的区别?
(1)get参数放在地址栏中,post参数放在请求主体中;
(2)get请求只发送一次TCP数据包,post要发送两次TCP数据包
(3)get请求能保存链接,但post不行
(4)get请求浏览器自动缓存,post缓存要手动设置,所以get请求刷新或后退不浪费资源,但post会重新请求
(5)get请求只支持URL编码,但post支持多种编码
4、请求的状态码
2XX:客户端请求被正常处理
3XX:资源重定向
4XX:客户端错误,服务器拒绝回答
5XX:服务器端请求错误
200 OK 请求正常处理完毕
204 No Content 请求成功处理,没有实体的主体返回
206 Partial Content GET范围请求已成功处理
301 Moved Permanently 永久重定向,资源已永久分配新URI
302 Found 临时重定向,资源已临时分配新URI
303 See Other 临时重定向,期望使用GET定向获取
304 Not Modified 发送的附带条件请求未满足
307 Temporary Redirect 临时重定向,POST不会变成GET
400 Bad Request 请求报文语法错误或参数错误
401 Unauthorized 需要通过HTTP认证,或认证失败
403 Forbidden 请求资源被拒绝
404 Not Found 无法找到请求资源(服务器无理由拒绝)
500 Internal Server Error 服务器故障或Web应用故障
503 Service Unavailable 服务器超负载或停机维护