HTTP协议入门——学习笔记02

HTTP协议入门以及curl介绍

HTTP介绍

超文本传输协议(HTTP:The Hypertext Transfer Protocol)是一种应用协议用于分布式,协作,超媒体的信息系统。HTTP是万维网数据通信的基础,其中超文本文档包括用户可以轻松访问的其他资源的超链接,例如通过鼠标点击或点击屏幕。开发HTTP是为了促进超文本和万维网(来自维基百科)

HTTP的作用

HTTP 的作用就是指导浏览器和服务器如何进行沟通

服务器与浏览器的交互:

服务器与浏览器的交互

交互的步骤:

1. 浏览器发出请求

2. 通过TCP/IP协议,浏览器和客户端三次握手(80端口)

3. 服务器对请求做出回应

HTTP的请求

HTTP的请求指要对所识别的资源执行的期望动作,资源对应于驻留在服务器上的文件或可执行文件的输出。HTTP / 1.0规范定义了GET,POST和HEAD方法,HTTP / 1.1规范添加了五种新方法:OPTIONS,PUT,DELETE,TRACE和CONNECT。通过在这些文档中指定,它们的语义是众所周知的并且可以依赖。任何客户端都可以使用任何方法,并且可以将服务器配置为支持任何方法组合。

如何查看HTTP的请求

  1. 使用Chrome浏览器输入网址(本例哔哩哔哩)
  2. 按下F12进入开发者模式,F5刷新在这里插入图片描述
  3. 点击开头 www.bilibili.com,再点击heardes->request heardes->view source,即可得到HTTP请求。如下:
    在这里插入图片描述

HTTP请求的格式

GET / HTTP/1.1 
Host: www.bilibili.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

  • 第一部分
    第1行,格式一般为**动词 + 路径 + 协议版本 **
  • 第二部分
    2-8行
    1. 第2行,HOST用来指定服务器的域名,可以将请求发往同一台服务器上的不同网站,为虚拟主机的兴起打下了基础
    2. 第3行表示持久连接(persistent connection)是HTTP/1.1 版引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明
    3. 第6行代表的客户端所使用的浏览器
    4. 第7行为Content-Encoding 字段说明浏览器可以接受哪些压缩方法
    5. 第8行,默认语言属性,浏览器告诉服务器其支持什么语言
  • 第三部分
    第9行,空格
HTTP请求常用动词及作用
  • GET
    请求指定资源的表示。使用GET的请求应该只检索数据,不应该有其他影响。可以理解为只读取。
  • POST
    请求服务器接受被附在请求作为新下属的实体网络资源由URI标识。例如 将Web表单提交给数据处理过程的结果数据块; 或要添加到数据库的项目。也就是向服务器提交数据,常见的提交表单都是POST方法。
  • PUT
    请求将所包含的实体存储在提供的URI下。如果URI引用已存在的资源,则将其修改; 如果URI未指向现有资源,则服务器可以使用该URI创建资源。
  • HEAD
    只请求页面的首部,但没有响应主体。这对于检索在响应头中编写的元信息非常有用,而无需传输整个内容。

HTTP的响应

如何查看HTTP的响应

步骤如请求,第3步为heardes->response heardes->view source,如图:
在这里插入图片描述

HTTP响应的格式

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Origin,Accept-Encoding
Content-Encoding: gzip

  • 同样分为三部分
  • 第一部分
    第1行,格式一般协议版本 + 状态码(status code) + 状态描述
  • 第二部分
    1. 第2行,为字符的编码,1.0版规定,头信息必须是 ASCII 码,后面的数据可以是任何格式。因此,服务器回应的时候,必须告诉客户端,数据是什么格式,这就是Content-Type字段的作用
    2. 第6行,由于发送的数据可以是任何格式,因此可以把数据压缩后再发送。Content-Encoding字段说明数据的压缩方法
  • 第三部分
    第7 行,空格
HTTP状态码(status code)

超文本传输​​协议(HTTP)响应状态代码的列表。状态代码由服务器发出,以响应客户端对服务器的请求。它包括来自IETF Request for Comments(RFC)的代码,其他规范以及在超文本传输​​协议(HTTP)的一些常见应用中使用的一些附加代码。状态代码的第一个数字指定五个标准响应类别之一。所示的消息短语是典型的,但是可以提供任何人类可读的替代方案。除非另有说明,否则状态代码是HTTP / 1.1标准(RFC 7231)的一部分。(来自维基百科)

  • 1xx(信息):收到请求,继续处理
  • 2xx(成功):请求已成功接收,理解和接受
  • 3xx(重定向):需要采取进一步措施才能完成请求
  • 4xx(客户端错误):请求包含错误的语法或无法满足
  • 5xx(服务器错误):服务器无法满足明显有效的请求

CURL介绍

一个计算机软件项目,提供了一个库和命令行工具,用于使用各种协议传输数据。cURL项目生成两个产品libcurl和cURL。它于1997年首次发布。该名称代表“客户端URL”。原作者和首席开发人员是瑞典开发人员Daniel Stenberg。

用法(待续)

  • 查看网页源代码以及下载网页

    $ curl www.baidu.com
    curl -o [xxx] www.baidu.com
    

    在这里插入图片描述

  • 使用-X GET得到GET请求

    $ curl -X  GET www.baidu.com
    

    在这里插入图片描述

  • 使用-i 同时获得HTTP头和文件内容

    curl -i www.bilibili.com
    

    在这里插入图片描述

  • 用 -L对网址重定向

    curl -L www.baidu.com
    
  • 用 -d 发送 POST 请求

    curl -d [xxx] www.baidu.com
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值