# HTTP

# HTTP有哪些方法

-HTTP1.0定义了三种请求方法: GET, POSTHEAD方法

  • HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACECONNECT

# 这些方法具体哪些作用

  • GET: 通常用于请求服务器发送某些资源
  • HEAD: 请求资源的头部信息, 并且这些头部与 HTTP GET 方法请求时返回的一致. 该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源
  • OPTIONS: 用于获取目的资源所支持的通信选项
  • POST: 发送数据给服务器
  • PUT: 用于新增资源或者使用请求中的有效负载替换目标资源的表现形式
  • DELETE: 用于删除指定的资源
  • PATCH: 用于对资源进行部分修改
  • CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
  • TRACE: 回显服务器收到的请求,主要用于测试或诊断

# GET和POST有什么区别?

  • 数据传输方式不同:GET请求通过URL传输数据,而POST的数据通过请求体传输.
  • 安全性不同:POST的数据因为在请求主体内,所以有一定的安全性保证,而GET的数据在URL中,通过历史记录,缓存很容易查到数据信息.
  • 数据类型不同:GET只允许 ASCII 字符,而POST无限制
  • GET无害: 刷新、后退等浏览器操作GET请求是无害的,POST可能重复提交表单
  • 特性不同:GET是安全(这里的安全是指只读特性,就是使用这个方法不会引起服务器状态变化)且幂等(幂等的概念是指同一个请求方法执行多次和仅执行一次的效果完全相同),而POST是非安全非幂等

# PUT和POST都是给服务器发送新增资源,有什么区别?

PUTPOST方法的区别是,PUT方法是幂等的:连续调用一次或者多次的效果相同(无副作用),而POST方法是非幂等的.

POST表示创建资源,PUT表示更新资源』这种说法是错误的,两个都能创建资源,根本区别就在于幂等性

# PUT和PATCH都是给服务器发送修改资源,有什么区别?

PUTPATCH都是更新资源,而PATCH用来对已知资源进行局部更新.

# http的请求报文是什么样的?

请求报文有4部分组成:

  • 请求行 请求方法字段、URL字段、HTTP协议版本字段.它们用空格分隔.例如,GET /index.html HTTP/1.1.

  • 请求头部 请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔 1.User-Agent:产生请求的浏览器类型. 2.Accept:客户端可识别的内容类型列表. 3.Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机.

  • 空行

  • 请求体 post put等请求携带的数据

# http的响应报文是什么样的?

请求报文有4部分组成:

  • 响应行 由协议版本,状态码和状态码的原因短语组成,例如HTTP/1.1 200 OK.
  • 响应头 响应部首组成
  • 空行
  • 响应体 服务器响应的数据

# 同样是重定向307,303,302的区别?

302是http1.0的协议状态码,在http1.1版本的时候为了细化302状态码又出来了两个303307. 303明确表示客户端应当采用get方法获取资源,他会把POST请求变为GET请求进行重定向. 307会遵照浏览器标准,不会从post变为get.

# HTTP的keep-alive是干什么的?

在早期的HTTP/1.0中,每次http请求都要创建一个连接,而创建连接的过程需要消耗资源和时间,为了减少资源消耗,缩短响应时间,就需要重用连接.在后来的HTTP/1.0中以及HTTP/1.1中,引入了重用连接的机制,就是在http请求头中加入Connection: keep-alive来告诉对方这个请求响应完成后不要关闭,下一次咱们还用这个请求继续交流.协议规定HTTP/1.0如果想要保持长连接,需要在请求头中加上Connection: keep-alive. keep-alive的优点:

  • 较少的CPU和内存的使用(由于同时打开的连接的减少了)
  • 允许请求和应答的HTTP管线化
  • 降低拥塞控制 (TCP连接减少了)
  • 减少了后续请求的延迟(无需再进行握手)
  • 报告错误无需关闭TCP

# 为什么有了HTTP为什么还要HTTPS?

https是安全版的http,因为http协议的数据都是明文进行传输的,所以对于一些敏感信息的传输就很不安全,HTTPS就是为了解决HTTP的不安全而生的.

最后更新时间: 6/24/2019, 2:49:10 PM