HTTP协议知识点(二)

一台HTTP服务器可以搭建多个Web站点,相同的IP地址下,虚拟主机可以寄存多个不同主机名和域名的Web网站,因此在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI

代理:一种有转发功能的应用程序,扮演了位于服务器和客户端中间人的角色,接受由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

网关:转发其他服务器通信数据的服务器,接受从客户端发送过来的请求时,它会想自己拥有资源的源服务器一样对请求进行处理。也可以由HTTP请求转化为其他通信协议,此外网关也能提高通信的完全性,可以在客户端和网关之间的通信线路上加密以确保连接的安全
在这里插入图片描述

隧道:是在相隔甚远的客户端和服务器之间进行中转,并保持双方通信连接的应用程序。使用SSL等加密手段进行通信。确保客户端能与服务器进行安全的通信
在这里插入图片描述

代理服务器:
在这里插入图片描述

代理服务器优势:利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的

缓存:代理服务器或客户端本地磁盘内保持的资源副本,缓存服务器是代理服务器的一种。利用缓存可以避免多次从源服务器转发资源,因此客户端可以就近从缓存服务器上获取资源,而源服务器也不必多次处理相同的请求了。缓存存在一个有效期

HTTP报文首部

在这里插入图片描述

HTTP响应报文由HTTP版本,状态码,HTTP首部字段3部分:
首部字段是为了给浏览器和服务器提供报文主体大小,所使用的语言,认证信息等内容。

1.通用首部字段(General Header Fields):请求报文和响应报文两方都会使用的首部
2.请求首段字段(Request Header Fields):从客户端向服务端发送请求报文时使用的首部,补充了请求的附加内容,客户端信息,响应内容相关优先级等信息
3.响应首部字段(Response Header Fields):从服务器端向客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端附加额外的内容信息
4.实体首部字段(Entity Header Fields):针对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息

首段字段结构:首部字段名和字段值构成的,中间使用冒号:分割

通用首部字段
在这里插入图片描述

请求首部字段
在这里插入图片描述

响应首部字段
在这里插入图片描述

实体首部字段
在这里插入图片描述

HTTP首部字段将定义成缓存代理和非缓存代理的行为

端到端首部(End-to-End Header):分在次类别中的首部会转发给请求/响应对应的最终接受目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发
逐跳首部(Hop-by-hop Header):分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发,如果使用hop-by-hop首部,需要提供Connection首部字端
    Connection
    Keep-Alive
    Proxy-Authenticate
    Proxy-Authorization
    Trailer
    TE
    Transfer-Encoding
    Upgrade这八个都是逐跳首部(其他字段都是端到端字段)

cache-Control:控制缓存行为。

格式:Cache-Control:private(public 表示是否可以缓存), max-age=0, no-cache

缓存请求指令
在这里插入图片描述

缓存响应指令
在这里插入图片描述

Cache-Control中部分操作

Cache-Control:min-fresh=60(单位:秒):指令要求缓存服务器返回至少还未过指定时间的缓存资源
Cache-Control:max-stale=3600(秒):权限高于min-fresh,只要没过max-stale时间就可以被客户端接受响应,不指定时间就是永久
only-if-cached:表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回,也就是要求缓存服务器不重新加载响应,也不会再次确认资源的有效性
must-revalidate:代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效,权限甚至比max-stale更高,直接忽视它
proxy-revalidate:要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性
no-transform:无论是在请求还是在响应中,缓存都不能改变实体主体的媒体类型,防止缓存或代理压缩图片的操作

HTTP1.1警告码
在这里插入图片描述

请求首部字段

用于补充请求的附加信息,客户端信息,对响应内容相关的优先级等内容

Accept

可通知服务器,用户代理能够处理的媒体类型和媒体类型的相对优先级,优先级使用q=来额外表示权重值

Accept-Charset:用来通知服务器用户代理支持的字符集及字符集的相对优先顺序,用于内容协商机制的服务器驱动协商
格式:Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
Accept-Encoding:用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序
格式:Accept-Encoding: gzip, deflate
Accept-Language:告诉服务器用户代理能够处理的自然语言集
格式Accept-Language: zh-cn,zh;q=0.7,en-us,en;q=0.3
Authorization: 告知服务器用户代理的认证信息
格式:Authorization: Basic dWVub3NlbjpwYXNzd29yZA==
Host:告知服务器请求的资源所处的互联网主机名和端口号,必须被包含在请求内的首部字段

Proxy-Authorization:客户端和代理服务器之间的相互认证

Referer:告知服务器请求的原始资源的URI

User-Agent:用于传达浏览器的种类和用户代理名称等信息给服务器

格式:User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gec

响应首部字段

由服务器端向客户端返回响应报文中所使用的字段,用于补充响应的附加信息,服务器信息以及对客户端的附加要求等信息

Accept-Ranges: 用来告知客户端服务器是否能够处理范围请求以指定获取服务器端某个部分的资源

Age:告知客户端源服务器在多久之前创建了响应,字段值的单位为秒

ETag:客户端的实体标识,ETag有强弱之分,强ETag不论实体发生多么细微的变化都会该改变其值,而弱ETag只用于提示资源是否相同,只有资源发生了根本变化,产生差异才会改变ETag值

Location: http://www.usagidesign.jp/sample.html 使用首部字段可以将响应接收方引导至某个与请求URI位置不同的资源,几乎所有的浏览器在接收到包含首部字段Location的响应后,都会强制性地尝试对已提示的重定向资源访问。

Server:首部字段Server告诉客户端当前服务器上安装的HTTP服务器应用程序的信息,不单单会标出服务器上的软件应用名称,还有可能包括版本号和安装时启动的可选项

Vary:可对缓存进行控制
在这里插入图片描述

如果语言不同,则只能从源服务器端获取资源后才能作为响应返回

实体首部字段

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的的首部,用户补充内容的更新时间等与实体相关的信息

Allow:用户通知客户端能够支持Request-URI指定资源的所有HTTP方法。
Content-Encoding:告知客户端服务器对实体的主体部分选用的内容编码方式,内容编码是指在不丢失实体信息的前提下所进行的压缩
Content-Location 表示的是报文主体返回资源对应的 URI
Content-Range:告知客户端作为响应返回的实体的那个部分符合范围请求
Expires:将资源失效的日期告知客户端
Last-Modified 指明资源最终修改的时间

为Cookie服务的首部字段
在这里插入图片描述

Set-Cookie字段属性和含义
在这里插入图片描述

其他首部字段

X-Frame-Options:用于控制网站内容再其他Web网站的Frame标签内的显示问题,主要目的是为了防止点击劫持攻击

X-XSS-Protection:针对XSS的一种策略,用于控制浏览器XSS防护机制的开关

DNT:Do Not Track的简称,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法

P3P:可以让Web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
课程简介这是一门使用Java语言,SpringBoot框架,从0开发一个RESTful API应用,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手写;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级项目,目的是让大家,学到真正的企业级项目开发技术。适用人群刚刚毕业的学生想提高职场竞争力想学从零开发SpringBoot项目想提升SpringBoot项目开发技术想学习SpringBoot项目架构技术想学习企业级项目开发技术就是想学习SpringBoot开发能学到什么从0开发一个类似企业级项目学会能做出市面上90%通用API快速增加1到2年实际开发经验刚毕业学完后能找到满意的工作已经工作学完后最高涨薪30%课程信息全课程目前是82章,155小时,每节视频都经过精心剪辑。在线学习分辨率最高1080P课程知识点1~11章:学习方法,项目架构,编码规范,Postman使用方法,Git和Github版本控制12~16章:搭建开发环境,快速入门SpringBoot框架17~20章:快速入门MySQL数据库21~30章:MyBatis,登录注册,找回密码,发送短信,发送邮件,企业级接口配置31~41章:实现歌单,歌单标签,音乐,列表分页,视频,评论,好友功能42~48章:阿里云OSS,话题,MyBatis-plus,应用监控49~53章:Redis使用,集成Redis,SpringCache,HTTP缓存54~58章:Elasticsearch使用,集成Elasticsearch,使用ES搜索59~61章:商城,集成支付宝SDK,支付宝支付62~64章:常用哈希和加密算法,接口加密和签名65~67章:实时挤掉用户,企业级项目测试环境,企业级接口文档68~69章:SpringBoot全站HTTPS,自签证书,申请免费证书70~73章:云MySQL数据库,云Redis数据库使用,轻量级应用部署环境,域名解析74~80章:Docker使用,生产级Kubernetes集群,域名解析,集群全站HTTPS81~82章:增和重构项目,课程总结,后续学习计划

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值