2021-04-15

本文详细探讨了URL构成、GET和POST方法的区别、HTTP协议定义及其特点,还涵盖了Cookie与Session的区别,以及HTTP请求响应过程和常用请求头。重点讲解了HTTP状态码和常见技术术语,如请求头中的Accept和Connection,以及关键的Session管理技术。
摘要由CSDN通过智能技术生成

笔记

一、url的构成:

协议://域名 :port

统一资源标识符,表示的是微博web上每一种可用的资源,如HTML文档、图像、视频片段、程序等都由一个url进行标识的。

二、GET和POST的区别

1.可见性
GET在url中传参,可以直接看见。
POST的传参方式url不可见,POST将参数存放在http包内
2.传输数据大小
GET传输数据受url的限制,最长2048个字符
POST没有字符长度限制
3.后退页面
GET后退没有影响,POST后退会重新提交
4.缓存
GET的请求会缓存,请求记录会存放在历史记录中
POST不可以被缓存,请求记录不会存放在历史记录中
5.编码方式
GET只支持url编码
POST支持多种编码方式
6.字符类型
GET只支持ASCII字符
POST没有字符类型限

三、HTTP协议的定义

超文本传输协议(HTTP)是一种通信协议,它是一个简单的请求-响应协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的游览器。
HTTP协议是个属于应用层的面向对象的协议,它通常运行在TCP之上。
HTTP协议是构建在TCP/IP协议之上的,它是TCP/IP协议的一个子集。

四、HTTP协议的特点

1.只支持客户/服务器模式,也就是客户端发起的请求,服务端响应请求。
2.简单快速:客户端向服务端发起请求时,只需要请求方法和路径。
3.灵活:允许传输任意类型的数据类型,正在传输的类型由Content-Type(HTTP包中用来表示内容的标识)加以标记。
4.无连接:无连接即是限制每次处理一个请求,服务端处理完客户端的请求,并收到应答后断开连接,可以设置超时时,也可以keep-alive来保持连接,这样可以减少传输时间,节省资源占用。
5.无状态:HTTP协议时无状态协议,无状态协议是指协议对事务所处理的能力是没有记忆里的,缺少状态意味着如果后续再次使用,需要再次重新传输,这样会导致每次链接后的数据量的增大,服务器不需要先前信息时,它应答就比较快,它利用cookie及session技术维持简单的连接。

四、cookie和session的区别和用法

1、cookie的原理

当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你。
Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie来辨认使用者,以方便送出使用者量身定做的内容,像是 Web 接口的免费 email 网站,都要用到 Cookie。

2.session的原理

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。

Cookie与session的区别

1.存放位置不同
cookie存储在客户端,session存储在服务器。
2.安全性不同。
Cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。 假如选用Cookie,比较好的方法是,敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都能够有效的保护。
3.有效性不同,cookie会长于session
只需要设置Cookie的过期时间属性为一个很大很大的数字,Cookie就可以在浏览器保存很长时间。 由于Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了浏览器(一次会话结束),该Session就会失效
4.对服务器压力不同
Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。而Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。

五、HTTP请求响应过程

1.域名解析
2.发起TCP的三次握手
3.建立TCP连接后发起HTTP请求
4.服务器端响应HTTP请求,游览器得到html代码
5.游览器解析html代码,并请求html代码中的资源

在这里插入图片描述

六、HTTP请求方法

HTTP/1.1协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,以下为常用的8种:
1.OPTIONS:返回服务器所支持的HTTP请求方法。
2.HEAD:与GET请求相一致的响应,但只返回头部信息,响应体将不会被返回。
3.GET:向特定的资源发送请求。
4.POST:向指定资源提交数据进行处理请求,数据被包含在请求体中。
5.PUT:向指定资源位置上传其最新消息。
6.DELETE:请求服务器删除指定资源。
7.TRACE:回显服务器收到的请求,主要用于测试或诊断。
8.CONNECT:开启客户端与请求资源之间的双向通道,它可以用来创建隧道(代理)。

七、常见的请求头

在这里插入图片描述

HTTP报文头大体分为四类:
1.通用报文头
2.请求报文头
3.响应报文头
4.实体报文头
另外在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:
作用:表示请求消息正文的长度

八、常见的状态码

通用记忆法
分类 含义
1. 1XX 表示消息。这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态和某些可选的响应头信息,并以空行结束。
2. 2XX 表示成功。这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
3. 3XX 表示重定向。这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址在本次响应的Location域中指明。
4. 4XX 表示请求错误、这类状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个HEAD请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永济性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含此类错误响应中的实体内容。
5. 5XX 表示服务器错误。这类状态码代表了服务器在处理请求过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD请求,否则服务器·包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中包含的实体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值