HTTP协议

HTTP协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。

HTTP是客户端浏览器或其它应用程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

默认HTTP的端口号为80,HTTPS的端口号为443。

HTTP协议的主要特点

  • 支持客户/服务器模式。

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP协议的工作方式

  • 由HTTP客户端发起一个请求建立一个到服务器指定端口(默认是80端口)的TCP连接
  • HTTP服务器则在那个端口监听客户端发送过来的请求一旦收到请求,服务器向客户端发送一个状态行,比如“HTTP /1.1 200 OK”,和响应的消息,消息的消息题可能是请求的文件、错误消息、或者其他一些信息。
  • HTTP使用TCP而不是UDP的原因在于打开一个网页必须传送很多的数据,而TCP协议提供传输控制、按顺序组织数据、和错误纠正。

HTTP请求报文

由三部分组成:请求行+请求头+请求体
在这里插入图片描述

  • 请求行

  • 请求方法:GET和POST时是最常用的方法,除此还有HEAD、PUT、DELETE、TRACE、OPTIONS等。
    在这里插入图片描述

  • URL地址:和报文头的HOST属性组成完整的请求URL

  • 协议名称和版本号。目前主流HTTP版本是1.1

  • 请求头

  • HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务器据此获知客户端的信息

  • 请求体

  • 报文体,将一个页面表单中的组建值通过param1=value1&param2=value2的键值对的形式编码成一个格式化字符串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html?param1=value1&param2&value2”的方式传递请求参数。

HTTP响应报文

由三部分组成:响应行+响应头+响应体
在这里插入图片描述

状态码和状态信息

在这里插入图片描述

关于HTTP常见问题

  • GET和POST的区别

  • 从字面意思和HTTP的规范来看,GET用于获取资源信息而POST是用来更新资源信息

  • GET提交请求的数据实体会放在URL的后面,用?来分割,参数用&连接,
    比如:/index.html?name=wang&login=1

  • GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST没有

  • GET提交的数据不安全,因为参数都会暴露在URL上。

  • 408 Request Timeout和504 Gateway Timeout的区别

  • 408是说请求超时,就是建立连接之后在约定的时间内客户端没有发送请求到服务端。本质上原因在于客户端或者网络拥塞。504是网关超时,是说代理服务器把客户端的请求转发到应用服务器后在约定的时间内没有收到应用服无器的响应。本质上原因在于服务端的响应太慢,也有可能是网络的问题。

  • cookie和session 的区别

  • cookie数据存放在客户的浏览器上,session数据放在服务器上
    Cookie是客户端请求服务端时服务器就会将一些信息以键值对的形式返回给客户端,保存在浏览器中,交互的时候可以加上这些Cookie值。用Cookie就可以方便的做一些缓存。

  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;

  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE

  • 单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K;

Cookie

https://blog.csdn.net/codejas/article/details/79002339
Cookie 表示在HTTP 服务器和客户之间传递的状态信息

Cookie工作方式

简单理解:Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都记录下来。当下次你再光临同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你。

当用户A 浏览某个允许使用Cookie 的网站时,该网站的服务器就会为A 产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。接着再给A 的HTTP 响应报文中添加一个叫做Set-cookie 的首部行。这里的“首部字段名”就是“Set-cookie”,而后面的“值”就是赋予该用户的“识别码”。

当A 收到响应时,其浏览器就在它管理的特定Cookie 文件中添加一行,其中包括这个服务器的主机名和Set-cookie 后面给出的识别码。当A 继续浏览这个网站时,每发送一个HTTP 请求报文,其浏览器就会在Cookie 文件中取出这个网站的识别码,并放到HTTP 请求报文的Cookie 首部行中
于是网站就可以跟踪用户A 在该网站的活动。要注意的是,服务器并不需要知道这个用户的真实姓名和其他信息。服务器根据Cookie 信息可以知道用户A 在什么时间访问了哪些页面,以及访问这些页面的顺序。假如当一个用户在一些购物网站上浏览信息,如果该用户在该网站登记过和使用过信用卡消费,那么这个网站就记录了该用户的姓名、信用卡号码等。所以下次当用户继续想在该购物网站购物时,因为浏览器产生的HTTP 请求报文中都携带了同样的Cookie 首部行,服务器就可以利用Cookie 信息识别出该用户,所以就不需要再手动键入自己的姓名、信用卡信息等。这样做显然是很方便的。

到这里你可能也想到了,这样做虽然很方便但是却是不安全的。因为Cookie 中保存了用户的很多信息,这对用户的隐私信息不够保密。但是我们在浏览网站时一般不需要考虑这个问题,这些问题开发者在进行网站开发的时候已经帮我们做了保护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值