HTTP实用指南 | 青训营笔记

141 阅读3分钟

HTTP实用指南 | 青训营笔记

这是我参与「第四届青训营」笔记创作活动的第6天

初识 HTTP

  • Hyper Text Transfer Protocol 超文本传输协议
  • 应用层协议,基于TCP协议
  • 请求响应
  • 简单可扩展
  • 无状态
image.png

协议分析

  • Safe(安全的)∶不会修改服务器的数据的方法(GET HEAD OPTIONS
  • ldempotent(幂等)︰ 同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是ldempotent的(GET HEAD OPTIONS PUT DELETE

状态码

image.png
  • 200 OK -客户端请求成功
  • 301-资源(网页等)被永久转移到其它URL302-临时跳转
  • 401 Unauthorized -请求未经授权
  • 404-请求资源不存在,可能是输入了错误的URL500 -服务器内部发生了不可预期的错误
  • 504 Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应。

RESTful API

RESTful API∶一种API设计风格; REST - Representational State Transfer

(1)每一个URI代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过HTTP method,对服务器端资源进行操作,实现"表现层状态转化"

HTTP/2

帧(frame) : HTTP/2通信的最小单位。每个帧都包含帧头,至少也会标识出当前帧所属的数据流。

消息: 与逻辑请求或响应消息对应的完整的一系列帧。

数据流: 已建立的连接内的双向字节流,可以承载一条或多条消息。

HTTP/2连接都是永久的,而且仅需要每个来源一个连接

流控制: 阻止发送方向接收方发送大量数据的机制

HTTPS

HTTPS : Hypertext TransferProtocol Secure

经过TSL/SSL加密

对称加密︰ 加密和解密都是使用同一个密钥

非对称加密,加密和解密需要使用两个不同的密钥︰公钥(public key)和私钥(private key)

场景分析

跨域

浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。

例:a页面想获取b页面资源,如果a、b页面的协议、域名、端口其中之一不同,进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问

image.png

解决?

CORS ( Cross- Origin Resource Sharing ):整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

预请求︰获知服务端是否允许该跨源请求(复杂请求)