HTTP协议知识点

HTTP

HTTP无状态协议,是指协议对于交互性场景没有记忆能力。

  • 当同一个浏览器再次给你服务器发送请求的时候,服务器并不知道它就是刚才那个浏览器。简单的说,服务器不会记得你,所以就是无状态协议。

HTTP请求报文与响应报文格式

请求报文包含四部分:

  • 请求行:包含请求方法、URI、HTTP版本信息
  • 请求首部字段
  • 空行
  • 空行请求内容实体
  • 在这里插入图片描述

响应报文包含四部分:

  • 状态行:包含HTTP版本、状态码、状态码的原因短语
  • 响应首部字段
  • 空行
  • 响应内容实体
    在这里插入图片描述

常见的首部

  1. 通用首部字段(请求报文与响应报文都会使用的首部字段)
  • Date:创建报文时间
  • Connection:连接的管理
  • Cache-Control:缓存的控制
  • Transfer-Encoding:报文主体的传输编码方式
  1. 请求首部字段(请求报文会使用的首部字段)
    Host:请求资源所在服务器
  • Accept:可处理的媒体类型
  • Accept-Charset:可接收的字符集
  • Accept-Encoding:可接受的内容编码
  • Accept-Language:可接受的自然语言
  1. 响应首部字段(响应报文会使用的首部字段)
  • Accept-Ranges:可接受的字节范围
  • Location:令客户端重新定向到的URI
  • Server:HTTP服务器的安装信息
  1. 实体首部字段(请求报文与响应报文的的实体部分使用的首部字段)
  • Allow:资源可支持的HTTP方法
  • Content-Type:实体主类的类型
  • Content-Encoding:实体主体适用的编码方式
  • Content-Language:实体主体的自然语言
  • Content-Length:实体主体的的字节数
  • Content-Range:实体主体的位置范围,一般用于发出部分请求时使用

常见的HTTP相应状态码

  • 200:请求被正常处理
  • 204:请求被受理但没有资源可以返回
  • 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
  • 301:永久性重定向
  • 302:临时重定向
  • 303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
  • 304:发送附带条件的请求时,条件不满足时返回,与重定向无关
  • 307:临时重定向,与302类似,只是强制要求使用POST方法
  • 400:请求报文语法有误,服务器无法识别
  • 401:请求需要认证
  • 403:请求的对应资源禁止被访问
  • 404:服务器无法找到对应资源
  • 500:服务器内部错误
  • 503:服务器正忙

HTTPS简介

HTTPS是安全的HTTP通道,即在HTTP通信中加入了SSL层(当前版本是TLS1.2),通信的数据被加密了,防止被窃取,具体的通信流程如下:
在这里插入图片描述
HTTPS使用的加密方式结合了对称加密和不对称加密的特点,在保证安全的情况下,又提高了传输效率。
HTTP和HTTPS的区别如下:

  1. https协议需要到ca申请证书,一般免费证书很少,需要交费。
  2. http的信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  3. http和https用的端口不一样,前者是80,后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

关于Get和Post的区别

  • Get是从服务器上获得数据,而Post则是向服务器传递数据的。
  • Get是不安全的,很可能你的一些操作会被第三方看到,而Post的所有操作多用户来说是不可见的。
  • Get传输的数据量小,主要是因为它受约于URL长度的限制,而Post可以传输大量的数据,所以我们在传文件的时候会用Post。
  • Get限制From表单的数据集的值必须为ASCLL字符,而Post支持整个ISO10646字符集。

Cookie和Session的区别

  1. 存储位置不同
  • cookie的数据信息存放在客户端浏览器上。

  • session的数据信息存放在服务器上。

  1. 存储容量不同
  • 单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。

  • 对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。

  1. 存储方式不同
  • cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。

  • session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。

  1. 隐私策略不同
  • cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。

  • session存储在服务器上,对客户端是透明对,不存在敏感信息泄漏的风险。

  1. 有效期上不同
  • 开发可以通过设置cookie的属性,达到使cookie长期有效的效果。

  • session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。

  1. 服务器压力不同
  • cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。

  • session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。

  1. 跨域支持上不同
  • cookie支持跨域名访问。

  • session不支持跨域名访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值