再次学习http

学习来源:https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview

一、http概述:
请求一般都是由客户端发给服务器 ,但是中间会有实体(也就是代理)

代理:在该请求和响应之间,存在许多实体,统称为代理

1.通过http可以控制的功能列表:

          1、缓存:服务器可以指示代理和客户端,缓存内容以及缓存时间。客户端可以指示中间缓存代理忽略存储的文档。
          2、放宽圆点约束:为了防止窥探和其他隐私入侵,Web浏览器强制实现网站之间的严格分离。只有来自同一来源的页面才                                             能访问网页的所有信息。虽然这种约束对服务器来说是一种负担,但HTTP标头可以放松这种严格的分                                               离服务器端,允许文档成为来自不同域的信息的拼凑(甚至可能存在与安全相关的原因)。
          3、身份验证:某些页面可能受到保护,因此只有特定用户才能访问它 HTTP可以使用WWW-Authenticate相似的标头或通                                    过使用HTTP cookie设置特定会话来提供基本身份验证
          4、代理和隧道:服务器和/或客户端通常位于Intranet上,并将其真实IP地址隐藏给其他人。然后,HTTP请求通过代理穿                                           过此网络障碍。并非所有代理都是HTTP代理。例如,SOCKS协议在较低级别运行。像ftp这样的其他代理                                         可以由这些代理处理。
          5、会话:使用HTTP cookie允许您将请求与服务器的状态链接。尽管基本HTTP是无状态协议,但这会创建会话。这不仅                                 适用于电子商务购物篮,也适用于允许用户配置输出的任何站点。

请求包括:                                                                                            响应包括:

          1、http方法:通常是get,post,options,head                                      1、遵循的http协议版本
          2、要获取的资源路径                                                                               2、状态码
          3、http协议的版本                                                                                    3、状态信息
          4、标头,例如:Keep-Alive,Connection.......                                        4、http标头,与请求标头类似
          5、正文,发送的实体                                                                               5、实体(可选)

二、基于http的API

基于http最常用的API是XMLHttpRequest
另一个API是单向服务,允许服务器向客户端发送事件
http/2增加了一些复杂性,通过在帧中嵌入http消息来提高性能,并可以使用http 消息监视器进行监控

三、http 缓存

          通过重用以前获取过的资源,可以提高网站和应用程序的性能,web缓存可减少延迟和网络流量,加快加载速度从而提高用户体验。
          缓存是一种保存资源副本并在请求时提供服务的技术。当web请求获取资源时如果有缓存就从缓存中取而不从服务器中取。这样做的目标
                  1、减轻了本应该从服务器获取数据对服务器的压力。
                  2、传输时间更少,效率更高

          缓存分两大类:私有缓存和共享缓存。
                                   ***私有缓存专用于一个用户使用,例如浏览器看文档时方便前进后退不用从服务器掉接口
                                   ***共享缓存用于存储多个用户可以重用的响应

          缓存条目常见形式:主缓存密钥通常由请求方法和目标URI组成(通常只使用URI,因为只有GET可请求缓存)
                                          1、检索请求的成功结果,200以及返回对应的请求资源
                                          2、永久重定向,301
                                          3、检索错误,404找不到
                                          4、不完整结果,206只显示一部分
          控制缓存:http1.1在catch-control头中设置字段用于指定请求和响应缓存机制的指令
                            1、没有缓存存储空间,即每次都从服务端下载:Cache-Control:no-cache(没有缓存)
                                                                                                          Cache-Control:no-cache,no-store,must-revalidate
                            2、Cache-Control:public/private:public表示可以由任何缓存缓存;private供单个用户使用不由共享缓存存储
                            3、max-age=<seconds>(最大有效时间)在这个时间段内缓存都有效;然后检查是否含有expires标头,如                                       果有的话,其值减去Date标题的值确定新鲜保持时间。若两个标头都没就找last-modified

四、http中的cookie

          cookie一般常用场景:1、会话管理:登录信息,购物车以及游戏分数
                                              2、个性化:用户首选项,主题和其他设置
                                              3、跟踪:记录和分析用户行为

          现在更建议使用存储API,因为cookie会引发http请求会降低性能,例如localstorage ,sessionstorage,indexedDB(低级)
          当收到http请求时,服务器可以发送set-cookie带有响应的标头,可以指定到期日期或持续时间之后不再发送cookie;也                可以限制路径。
          设置cookie:Set-Cookie: <cookie-name> = <cookie-value>         cookie的简单设置
          永久cookie:设置永久cookie在客户端关闭时不会消失,还是按照expires时间   
          Secure和HttpOnly:Secure安全cookie也不是百分之百安全,所以cookie不能存储敏感信息     
                                           为了防止跨站脚本攻击(xss攻击:允许攻击者向客户端注入恶意代码,xss攻击分三类存储、反射、基                                               于dom),httpOnly应该设置标志,Set-Cookie:Secure , HttpOnly   
          cookie的范围:Domain指定接受cookie的主机,未指定默认是当前文档的主机,不包括子域;若Domain指定就包括子域
                                   例如,如果Domain=mozilla.org设置了,那么cookie就会包含在子域中developer.mozilla.org。 
                                   如果path等于path:/docs
         设置cookie:可以通过document.cookie设置cookie,document.cookie="honey_cookie:zhuzhu"  即创建一个新的cookie
         

五、跨域资源共享cors

          浏览器在执行与自己的源不同源(协议,域名,端口号)的资源的时候会跨域。

                    

 

猜你喜欢

转载自blog.csdn.net/weixin_41143293/article/details/87806644