HTTP

Posted yintingting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP相关的知识,希望对你有一定的参考价值。

技术分享图片

物理层:定义物理设备如何传输数据

数据链路层:在通信的实体间建立数据链路连接

网络层:为数据在节点之间传输创建逻辑链路

传输层:向用户提供可靠的端到端服务,向高层屏蔽了下层数据通信的细节

应用层:为应用软件提供了很多服务

 


 

HTTP协议的发展历史

  HTTP/0.9 : 只有一个Get命令   没有Header等描述数据的信息  服务器发送完毕就关闭TCP连接

  HTTP/1.0 : 增加了很多命令  添加了status code和header  多字符集支持、多部分发送、权限等

  HTTP/1.1 : 持久连接 (之前一个HTTP请求就需要在客户端和服务端之间创建一个TCP连接,服务端返回数据后,TCP连接就关闭了,成本比较高)  pipeline(服务端对于进来的请求要按照顺序进行内容的返回,后面的请求必须在前面请求数据发送完之后才能处理,HTTP2对此优化了  增加host和其他一些命令 

  HTTP2:所有数据以二进制传输  同一个连接里面发送多个请求不再需要按照顺序来  头信息压缩以及推送(之前都是客户端主动,服务端被动,而现在服务端可以主动发起数据传输)等提高效率的功能

 


 HTTP三次握手

 

技术分享图片


CORS跨域请求的限制与解决

同域:协议+域名+端口号 相同

浏览器的跨域限制:在当前网页,发起的任何请求必须在同域下,跨域的话必须服务器那边设置Access-Control-Allow-Origin :“*等”,同意跨域访问

跨域允许方法:
POST
GET
HEAD
Access-Control-Allow-Methods:不被允许的方法通过这个字段
跨域允许content-type
text/plain
multipart/form-data
application/x-www-form-urlencoded
 
请求头限制
有些请求头跨域请求是不允许的,需要设置Access-Control-Allow-Headers:”x-test-cors(比方)”
Access-Control-Max-Age:允许跨域请求的时间
 
域请求:OPTIONS方法
 
跨域请求其实是发起请求了,并且有返回数据。但浏览器因为一些安全策略,会根据Access-Control-Allow等字段来判断是否忽略掉返回数据并报错
 
Cache-Control
可缓存性:
public : HTTP请求返回的过程中,如果在cache-control中设置了public这个值,代表这个HTTP请求返回的内容经过的任何路径包括中间的HTTP代理服务器都可以对返回内容进行缓存的操作
private :只有发起请求的浏览器才可以缓存
no-cache : 任何一个节点都不可以缓存(可以在本地缓存,每次发起请求都要到服务器那边验证一下,服务器返回数据说可以使用缓存,那么才能使用缓存)
no-store:永远要到服务器拿新的内容,不缓存
max-age=<seconds> : 到期(基本用不到)
s-maxage=<seconds>:会代替max-age,但只有在代理服务器里才生效,浏览器读取max-age,代理服务器读取s-maxage(基本用不到)
max-stale:发起端设置,尽管缓存过期了,但如果在max-stale内,仍然可以使用过期的缓存,不需要到原服务器请求(基本用不到)
技术分享图片

 

Last-Modified : 上次修改时间,配合if-Modified-Since或If-Unmodified-Since使用,对比上次修改时间以验证资源是否需要更新
Etag:数据签名(资源修改,数据签名就会修改),配合If-match或者if-Non-Match使用,对比资源的签名喷段是否使用缓存
 

长连接 

Connection : keep alive


数据协商

分类:

请求

  Accept

  Accept-Encoding

  Accept-Language

  User-Agent

  Content

  Content-Type

  Content-Encoding

  content-Language

  

返回


 

Redirect

301:永久变更


 

以上是关于HTTP的主要内容,如果未能解决你的问题,请参考以下文章

HTTPHTTP协议的请求与响应

HttpHttp请求的流程

HTTPHTTP1.0HTTP1.1HTTP2.0HTTPS

HTTPHTTP POST GET 本质区别详解

httphttp的方法,状态码和组成部分

HTTPHTTP请求体中的四种格式,requests库发送post请求