第三天笔记

什么是Web

  • Web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为游览者

HTTP协议介绍

HTTP协议
  • 超文本传输协议(HTTP)是一种通信协议,它是一个简单的请求-响应协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的游览器。
  • HTTP协议是个属于应用层的面向对象的协议,它通常运行在TCP之上。
  • HTTP协议是构建在TCP/IP协议之上的,它是TCP/IP协议的一个子集。
HTTP协议特点
  1. 只支持客户/服务器模式,也就是客户端发起的请求,服务端响应请求。
  2. 简单快速:客户端向服务端发起请求时,只需要请求方法和路径。
    常用的请求方法:GET、post、HEAD等,请求方法决定了客户端与服务器联系方式的不同。由于HTTP协议的简单,使得HTTP服务器的程序规模小,因而速度很快。
  3. 灵活:允许传输任意类型的数据类型,正在传输的类型由Content-Type(HTTP包中用来表示内容的标识)加以标记。
  4. 无连接:无连接即是限制每次处理一个请求,服务端处理完客户端的请求,并收到应答后断开连接,可以设置超时时,也可以keep-alive来保持连接,这样可以减少传输时间,节省资源占用。
  5. 无状态:HTTP协议时无状态协议,无状态协议是指协议对事务所处理的能力是没有记忆里的,缺少状态意味着如果后续再次使用,需要再次重新传输,这样会导致每次链接后的数据量的增大,服务器不需要先前信息时,它应答就比较快,它利用cookie及session技术维持简单的连接。
HTTP请求方法

HTTP/1.1协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,一下为常用的8种:

  • OPTIONS:返回服务器所支持的HTTP请求方法。
  • HEAD:与GET请求相一致的响应,但只返回头部信息,响应体将不会被返回。
  • GET:向特定的资源发送请求。
  • POST:向指定资源提交数据进行处理请求,数据被包含在请求体中。
  • PUT:向指定资源位置上传其最新消息。
  • DELETE:请求服务器删除指定资源。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。
  • CONNECT:开启客户端与请求资源之间的双向通道,它可以用来创建隧道(代理)。
HTTP URL最大长度

HTTP RFC2616协议没有规定URL的最大长度,但规定服务器如果不能处理太长的URL,就得返回414状态码(Request-URL Too Long)。
HTTP RFC2616协议指出,某些旧的客户端或代码,可能无法处理超过255个字节的URI。
既然HTTP协议没有规定URL的最大长度,那么URL的最大长度与用户的游览器有关,同时的服务器能够处理的最大长度URL有关。站点地图协议(sitemap protocol),限制URL的长度时2048,如果你想让搜索引擎能够搜索到你,2048是最大极限了。

GET与POST的区别

1.URL可见性

  • GET传参方式是通过地址栏URL传递,是可以直接看到GET传递的参数据在URL后通过?连接,通过&进行参数分割。
  • POST传参方式参数URL不可见,POST将从参数纯放在HTTP的包体内。
    2.传输数据大小
  • GET传递数据是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字符。
  • POST没有长度限制。
    3.后退页面
  • GET后退不会有影响,POST后退会重新进行提交
    4.缓存
  • GET请求可以被缓存,请求的记录会留在历史记录中。
  • POST不可以被缓存,请求不会留在历史记录中。
    5.编码方式
  • GET请求只URL编码
  • POST支持多种编码方式。
    6.字符类型
  • GET只支持ASCII字符
  • POST没有字符类型限制。
会话跟踪技术:Cookie与session

Cookie:实际上是一小段的文本信息,客户端请求服务器,如果需要服务器记录该用户状态,那么服务器就向客户端浏览器颁发一个Cookie,客户端会把收到的Cookie保存起来,当浏览器再次请求该网站时,浏览器把请求的网站联通该Cookie一同提交给服务器,服务器会检查Cookie,以此判断用户状态,Cookie是具有时效性的,一般较长。
** Session**:实际上是以另一种记录客户端状态的机制,保存在服务器上,客户端访问服务器的时候服务端把客户端信息以某种方式,记录在服务器上。客户端游览器再次访问时,只需要从Session中查找客户端的状态就可以了。Session ID实在服务端中的唯一的。第一次访问,服务端(启用session功能)会检查请求中是否有session,没有就创建一个唯一的ID,并保存,并返回给客户端保存,保存ID的就是cookie。
session的保存方法:cookie保存、URL重写,也就是把sessionID附加在URL路径后面、隐藏表单,服务器自动修改表单,添加一个隐藏字段,以便表单将session传到服务器
时效性:自动注销,session超时失效,服务器为了防止缓冲区溢出,服务器会把潮湿的客户端删除。

Cookie与session的区别
  • 存放位置不同,cookie存储在客户端,session存储在服务器。
  • 安全性不同。
  • 有效性不同,cookie会长于session。
  • 对服务器压力不同。
HTTP请求响应过程
  • 域名解析
  • 发起TCP的三次握手
  • 建立TCP连接后发起HTTP请求
  • 服务器端响应HTTP请求,游览器得到html代码
  • 游览器解析html代码,并请求html代码中的资源
HTTP请求报文

1.组成一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。
2.服务器端响应http请求,游览器得到html代码
3.空行:它的作用是通过一个空行,告诉服务器请求头部到此为止。
4.请求数据:* 若方法字段是get,则此项为空,没有数据

  • 若方法字段是post,则通常来说此处防止的就是要提交的数据
  • 比如要使用post方法提交一个表单,其中有user字段中数据为“admin”,password字段为123456,那么这里的请求数据就是user=admin&password=123456,使用&来连接各个字段。
常见的请求头

HTTP报文头大体分为四类:

  • 通用报文头
  • 请求报文头
  • 响应报文头
  • 实体报文头
  • 另外在HTTP/1.1中共有47种报文头字段
  • **ACCEPT:**作用:游览器可以接受的媒体类型
  • Accept:text/html代表游览器可以接受服端相应的类型为html格式,如果无法返回,返回406错误。
  • **Accept:*/***游览器可以处理所有类型的请求。
  • **Accept——Encoding:**游览器声明自己接受的编码方法,通常是指压缩方法,是否支持压缩,是用什么方法压缩(gzip、deflate)。
  • **Accept-Language:**游览器声明自己接受的语言。
  • Accept-Language:zh-cn,zh,q=0.7.en-us,en;1=0.3客户端要求服务端有中文版资源的时候,返回中文版对应的响应,没有则返回英文版。
  • **CONNECTION:**作用:处理完这次请求后是否断开连接还是继续保持连接。
  • Connection:keep-alive当网页打开完成后,客户端和服务端之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问服务器上的网页,会继续使用这条为断开的连接。
  • Connection:close当网页打开完成后,客户端和服务端之间用于传输HTTP数据的TCP连接关闭,如果客户端再次访问服务器上的网页,需要继续新建一个TCP连接。
    HOST
    作用:请求头中主要用于请求资源的主机地址和端口号,它通常是在URL中提取出来
    Referer:
    客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的,包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
    User-Agent:
    作用:告诉服务器,当前用户使用什么操作系统,浏览器是什么版本及型号
    Content-Type:
    作用:说明报文体中的对象的媒体类型
    Content-Length:
    作用:表示请求消息正文的长度
分类含义
1XX表示消息。这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态和某些可选的响应头信息,并以空行结束。
2XX表示成功。这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
3XX表示重定向。这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址在本次响应的Location域中指明。
4XX表示请求错误、这类状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个HEAD请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永济性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含此类错误响应中的实体内容。
5XX表示服务器错误。这类状态码代表了服务器在处理请求过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD请求,否则服务器·包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中包含的实体。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vampire-z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值