Linux之HTTP协议

目录

一、HTTP协议

1.1 HTTP概念

1.2 HTTP协议的格式

1.3 URL

1.4 HTTP的请求方法

1.5 HTTP的状态码

1.6 HTTP报头

1.7 长链接与短链接

1.8 Cookie与Session

1.8.1 Cookie的概念

1.8.2 Cookie的应用场景

1.8.3 Session的概念


一、HTTP协议

1.1 HTTP概念

        HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本的协议。它是客户端和服务器之间进行通信的基础协议,它是超文本传输协议的缩写,更准确地说是用于从万维网服务器传输超文本到本地浏览器的传送协议。

1.2 HTTP协议的格式

        其中请求行(状态行)和请求报头(响应报头)被统称为http报头,而请求正文(响应正文)被称为有效载荷。

        接下来我们来逐一认识请求行中的元素。

1.3 URL

        URL其实就是我们平时所称的“网址”:

  urlencode和urldecode  
/ ? : 等这样的字符 , 已经被 url 当做特殊意义理解了 . 因此这些字符不能随意出现 .
比如 , 某个参数中需要带有这些特殊字符 , 就必须先对特殊字符进行转义 .
转义的规则如下:
将需要转码的字符转为 16 进制,然后从右到左,取 4 ( 不足 4 位直接处理 ) ,每 2 位做一位,前面加上 % ,编码成 %XY格式
如下图中  "+" 被转义成了 "%2B"
urldecode 就是 urlencode 的逆过程

1.4 HTTP的请求方法

其中GET和POST方法是最常用的:

  • GET方法,如果提交参数,是通过url方式进行提交的。
  • POST方法,如果提交参数,是通过正文进行提交的。

它们的区别在于:

  • ​​​​参数提交的位置不同,POST方法比较私密(私密 != 安全),不会回显到浏览器的url输入框。
  • GET是通过url传参的,而url是有大小限制的,和具体浏览器有关。POST方法是由正文部分传参,一般大小没有限制。

1.5 HTTP的状态码

最常见的状态码,比如:

200(OK), 404(Not Found),403(Forbidden),302(Redirect, 重定向), 504(Bad Gateway)

        其中重定向是指当访问一个网站的时候,会跳转到另一个网址(老网站过期,跳转到新网站),或者是访问网站时,提示登陆,然后跳转到登录页面,登陆后自动跳转会原来的页面,像这些现象就是重定向。

        重定向状态码,需要浏览器提供支持,server要告诉浏览器应该跳转到哪里。而http报头中的Location就起到这个作用。

1.6 HTTP报头

HTTP常见Header

  • Content-Type: 数据类型(text/html等)
  • Content-Length: Body的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能。

1.7 长链接与短链接

  • HTTP/1.0中,每次请求和响应都需要建立和关闭连接,这被称为
  • 而在HTTP/1.1中,引入了持久(也称为)的概念,允许多个请求和响应通过同一个TCP进行传输。
  • 在HTTP/1.1中,持久通过在请求头中添加"Connection: keep-alive"来表示客户端希望保持接,而服务器则可以在响应头中添加"Connection: keep-alive"来确认是否支持持久接。如果服务器不支持持久接,会在响应头中添加"Connection: close"来表示关闭

1.8 Cookie与Session

1.8.1 Cookie的概念

        Cookie是一种在客户端(通常是Web浏览器)和服务器之间传递数据的机制。Cookie由服务器生成,服务器发送一个Cookie给客户端时,它会包含一个Key-Value键值对,以及一些可选的属性,如过期时间、域名、路径等。客户端接收到Cookie后,会将其保存在本地,并在后续的请求中自动将该Cookie发送给服务器。

  • 在浏览器角度:Cookie其实是一个文件,该文件里保存的是用户的私密信息。
  • 在http协议角度:一旦该网站有对应Cookie,在发起任何请求的时候,都会自动在request中携带该Cookie信息。

1.8.2 Cookie的应用场景

        那么Cookie有什么作用呢?

① 避免重复登录(记住密码)

        当我们打开一个网站时,如果这个网站我们曾经登录过,那么当我们再次打开网站时,发现就不需要再次登录了,而是直接进入了首页(例如:Bilibili)。

② 权限验证

        由于HTTP是一种无状态(不知道上一次访问该网站的用户是谁)的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。

Cookie其实是存在一定的安全隐患的,别人盗取自己的Cookie文件,就可以用我的身份进行认证访问特定资源;如果Cookie中保存了,用户名和密码,那么自己的账号可能会被盗取。

因此就有了Session。

1.8.3 Session的概念

        session在网络应用中称为“会话控制”,是服务器为了保存用户状态而创建的一个特殊的对象。简而言之,session就是一个对象,用于存储信息。

        虽然session并不能有效的防止信息泄露,但是衍生出了一些防御措施,例如通过常用ip地址判定用户账号是否存在异常。如果存在异常地址登录,服务器则会废弃掉当前的session_id,让用户重新认证登录。 

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值