认识:HTTP协议

作者: 学的会的前端 | 来源:发表于2019-03-01 16:42 被阅读9次

HTTP协议规定,请求从客户端发出,最后服务器端响应请求并返回。

HTTP是不保存状态的协议

  • HTTP协议是一种不保存状态,即无状态协议,对请求和响应都不做持久化处理。
  • 优点:可以更快的处理大量事物,确保协议的可伸缩性。
  • 缺点:例如:登录一个网站后,当页面发生跳转后,没变法保持前一个页面的登录状态。
  • 解决办法:Cookie技术。

Cookie

Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务器端发送的报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
请求报文(没有Cookie信息的状态)

GET / reader / HTTP/1.1
Host:hackr.jp

响应报文(服务器端生成Cookie信息)

HTTP/1.1 200 OK
....
<Set-Cookie:sid = 1342077140226742; path= /; expires = Wed,10-Oct-12, 07:12:20 GMT>

请求报文(自动发送保存着Cookie的信息)

GET / reader / HTTP/1.1
Host:hackr.jp
Cookie:sid = 1342077140226742

持久连接

  • HTTP/1.1和你部分HTTP/1.0提出了持久连接。
  • 特点:只要任意一端没有明确提出断开连接,则保持TCP连接状态。
  • 优点:
  1. 减少了TCP连接的重复建立和断开的次数;
  2. 减少了服务器端的负载;
  3. HTTP请求和响应结束的时间更短。
  • 管线化:
    持久连接请求的方式:管线化。发送一个请求后,不需要等待响应,可以继续发送请求,所以可以做到同时并行发送多个请求,使得请求响应过程明显加快。

常见Http方法

HTTP协议使用URI定位互联网上的资源。常见的方法有:GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT、LINK、UNLINK\

GET:获取资源

GET方法用来请求访问的已被URI识别的资源,指定的资源经服务器端解析后返回响应内容。
浏览器导航栏输入的地址按回车,其实就是get 请求。

POST :传输实体主体

POST方法用来传输实体的主体,POST的主要目的不是获取响应的主体内容,而是向服务器发送数据。

GET和POST的区别:

  • get的请求参数会拼接到URL上,post的请求参数是不展现在URL上。
  • 浏览器会自动截取URL的长度,为防止内容丢失,传送大量数据的时候,用post。
  • 安全性:get方式提交用户名密码的时候,URL会展现出来,而且浏览器的历史记录中也会存在。请求到达服务器之后,请求日志也会看到。容易造成密码的泄露。
  • get要数据,post给数据。

PUT:传输文件

PUT方法用来传输文件,要求在请求报文的主体中包含文件的内容,然后保存到请求的URI指定的位置。
HTTP/1.1的PUT方法自身不带验证机制,存在安全问题,不经常使用,但是若配合Web应用程序的验证机制,或架构设计采用REST标准的同类Web网站,即可使用。

HEAD:获得报文首部

HEAD方法和GET方法一样,只是不返回报文的主体部分,用于确认URI的有效性及资源更新的日期和时间等。

DELETE

DELETE方法用来删除文件,限制性同PUT方法。

OPTIONS:询问支持的方法

OPTIONS方法用来查询针对请求的URI指定的资源支持的方法。

TRACE:追踪路径

TRACE方法是让Web服务器端将之前的请求通信返回给客户端的方法。
缺点:容易引起XST(跨站追踪)攻击。
不常用

CONNECT:要求用隧道协议连接代理

CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。
不常用

RESTful API:

  1. 表现层状态转换(Representational State Transfer,缩写:REST),API设计规范。后端设计URL的设计规范。
  2. HTTP方法与对应数据库增删改查对应
  • GET:读取(Read)
  • POST:新建(Create)
  • PUT:更新(Update)
  • PATCH:更新(Update),通常是部分更新
  • DELETE:删除(Delete)
  1. 范例
  • GET /books , 列出所有的图书
  • POST /books , 创建一本图书
  • PUT /books, 批量更新图书信息
  • DELETE /books, 删除所有图书
  • GET /books/10, 获取10号图书详细信息
  • PUT /books/10, 更新10号图书
  • PATCH /books/10, 更新10号图书
  • DELETE /books/10, 删除10号图书

PUT和PATCH有什么差别?

  • 对于
{
    "username": "hunger"
    "email": "hunger@jirengu.com" 
}
  • PUT修改传参,需包含全部参数
{
    "username": "hunger"
    "email": "hunger@vip.qq.com" 
}
  • PATCH修改传参,只需要传递需要修改的参数
{
    "email": "hunger@vip.qq.com" 
}
  • 另外推荐在URL中强制加入版本号,如
GET /v1/books

Form表单支持哪些方法

在form表单只支持 post 和get。再发AJAX请求时,以上都是可以接受的。也可以通过变通的方法,让服务器知道你本意是想做什么。

<form action="/books" method="POST">
    <input type="hidden" name="_method" value="PUT">
</form>

静态服务器案例:

  • 需求
    线上机器,外网IP:10.15.20.38
    输入这个IP地址的时候,会有一条HTTP的请求报文到达这个机器。
    在这个机器上可以上传文件,例如:abc.html
    http://10.15.20.38:80/abc.html
    结果就是输入http://10.15.20.38:80/abc.html之后,可以在浏览器看到页面上的内容。
    GET /abc.html HTTP/1.1
  • 解决步骤(静态服务器)
  1. abc.html,上传到10.15.20.38的/usr/local/www(上传到机器的文件夹下)
  2. 写一个服务器,监听80端口。(服务器其实就是一个应用程序,会时刻扫描端口,当端口收到了HTTP报文后,才可以进行处理。)
  3. 服务器听到请求,进行处理
    -- 请求的方法什么?
    -- 请求的path是/abc.html(此处还可以对path进行判断。)
    -- 服务器去读/usr/local/www/abc.html,拿出里面的数据
    -- 响应给客户端(里面除了数据之外,还有其他信息,比如告诉客户端这是一个html)
  4. 浏览器收到响应数据,数据类型是html,用html的方式渲染展示。
    若是:http://lill.com/abc.html
  5. 买一台服务器,获得外网:10.15.20.38
  6. 购买一个域名,lill.con
  7. 配置域名及解析到10.15.20.38。
    把信息提交给域名服务商。

相关文章

  • 认识HTTP协议

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)的缩写,是...

  • 认识:HTTP协议

    HTTP协议规定,请求从客户端发出,最后服务器端响应请求并返回。 HTTP是不保存状态的协议 HTTP协议是一种不...

  • 三,认识HTTP协议

    一,通过chrome的插件来认识HTTP协议 下面来认识一个GET请求 1,主请求(鼠标放上去,可以看到显示的地址...

  • HTTP协议简单认识

    Http协议的认识HTPP协议的定义:全称 Hyper text transfer protocol (超文本传输...

  • HTTP协议的认识

    HTTP的地址格式如下: HTTP消息 一个HTTP消息可能是request或者response消息,两种类型的消...

  • iOS 认识http协议

      超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网中使用最为广泛的一种...

  • HTTP 深入探究

    【前言】以下源于慕课网《大话HTTP协议》课程笔记 认识HTTP协议 HTTP 基础[https://www.ji...

  • HTTP协议的初步认识

    前言: 对于前端而言除了那个前端“三剑客”以外,其实HTTP协议也是非常重要的。所以自己也就小小的总结一下,在此写...

  • HTTP协议—— 简单认识TCP/IP协议

    http://www.cnblogs.com/roverliang/p/5176456.html

  • 听欢哥讲PHP之初识Http协议

    Http协议的认识HTPP协议的定义:全称 Hyper text transfer protocol (超文本传输...

网友评论

    本文标题:认识:HTTP协议

    本文链接:https://www.haomeiwen.com/subject/fkkduqtx.html