HTTP协议基础


HTTP协议

简介

超文本传输协议(HTTP) 是一个用于传输超媒体文档(例如HTML)的应用层协议。

它是为Web 浏览器与Web 服务器之间的通信而设计的,但也可以用于其他目的。 HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。

HTTP规定了传输的数据需要的格式。

传输HTTP协议格式的数据需要基于TCP协议,进行数据传输之前要建立连接。

URL

全称统一资源定位符Uniform Resource Locator),俗称网址。

常见格式为:

[协议类型]://[服务器地址]:[端口号]/[资源的文件路径]?[查询参数]
  • 协议类型常见的有httphttpsftp
  • 服务器地址可以是ip地址,也可以是域名(域名是ip地址的别称)
  • 端口号指服务器程序的端口号。web服务器端口号一般为80。如果是80,可以省略不写
  • 查询参数之间用&分隔

如:

https://www.python.org/downloads/release/python-3913/
https://www.python.org/search/?q=list
浏览器程序与web服务器程序的通讯过程
  1. 用户在浏览器程序中输入URL并回车
  2. DNS(域名解析服务器)收到URL并将域名解析为ip地址
  3. 浏览器程序收到解析后的URL
  4. 浏览器程序与web服务器程序通过TCP协议建立连接
  5. 浏览器程序向web服务器程序发送HTTP协议格式的请求数据
  6. web服务器程序在服务器主机上获取对应资源
  7. web服务器程序向浏览器程序发送HTTP协议格式的响应数据
浏览器开发者模式

进入方法:右击鼠标并点击检查 或者 直接使用F12 快捷键

在这里插入图片描述

  • Elements(元素):可查看或修改HTML元素的属性、CSS属性、监听事件、断点等
  • Console(控制台):可以执行JavaScript代码
  • Sources(资源):可查看网页的的HTML、JavaScript、CSS源代码以及图片等资源文件。还可以设置断点,调试JavaScript代码。
  • Network(网络):可查看http协议网络通信过程
Network

点击开发者模式的Network页面,输入网址并回车,就可以看到一项项请求与响应的过程。(下图左侧)。单击某条,可以看到该次通信的详细信息。

在这里插入图片描述

  • Headers(标头):查看http格式的响应头,请求头等传输数据(解析后,点击view source可见源数据)
  • Preview(预览):查看预览效果
  • Response(响应):查看响应体,即web服务器返回的资源数据(html,js,css等)

HTTP格式报文

在开发者模式的Network的Headers中查看

主要数据(General)

一些请求相关的主要信息

在这里插入图片描述

  • Request URL:请求的URL
  • Request Method:请求方式,常见的有GET,POST
  • Status Code:服务器响应的状态码(200),状态描述(OK)
  • Remote Address:远程主机(即服务器)的ip地址
状态码

HTTP 状态码是用于表示web服务器响应状态的3位数字代码。

状态码说明
200请求成功
307重定向
400错误的请求,即请求地址或者参数有误
404请求的资源在服务器中不存在
500服务器内部源代码出现错误
请求头(Request Headers)

由浏览器程序向web服务器程序发送

主要内容

在这里插入图片描述

  • GET / HTTP/1.1 :该行为请求行GET为请求的方式,/为请求的资源路径,HTTP/1.1为HTTP协议版本
请求方式特点
GET资源获取请求
POST数据提交请求。请求报文里一般有请求体。请求体中一般有用户提交的需要服务器解析或验证的数据。
  • Accept:可接受的数据类型。
  • Accept-Ecoding:可接受的压缩格式
  • Accept-Language:可接受的语言
  • Connection:keep-alive:一直保持连接。(若长时间无响应,会自动断开连接)
  • Cookie:一种登录用户的身份标识
  • Host:服务器地址
  • User-Agent:用户代理,即客户端程序的信息与名称
原始请求报文格式示例

浏览器发送的请求报文数据的格式由HTTP协议规定,大概如下:

POST / HTTP/1.1\r\n   (请求行)
Host: www.baidu.com\r\n   (请求头信息)
....
\r\n  (空行)
username=hello&pass=hello\r\n   (请求体)
  • 每行末需加上\r\n
  • 请求行+请求头信息+空行+请求体(如果有的话)
响应头(Response Headers)

由web服务端程序向浏览器程序发送

主要内容

在这里插入图片描述

  • 响应行:HTTP/1.1 200 OKHTTP/1.1为协议版本,200为状态码,OK为状态描述

  • Content-Type:响应体的类型

  • Date:以0时区GMT为标准的响应时间

  • Server:服务器名称。(BWS指的是BaiduWebServer)

  • Transfer-Encoding: chunked:发送的内容不确定长度,以\0\r\n标记结束。如果确定长度,用Content-Length描述。

原始响应报文格式示例

web服务器程序发送的响应报文数据的格式由HTTP协议规定,大概如下:

HTTP/1.1 200 OK\r\n   (响应行)
Server: BWS/1.1\r\n    (响应头信息)
...
\r\n   (空行)
<!DOCTYPE html><html lang=“en”> …</html>    (响应体)
  • 每行末需加上\r\n
  • 响应行+响应头信息+空行+响应体
  • 响应体中应包含浏览器程序所请求的资源,如html,css,js,图片(二进制形式)等。可以在Network的Response中查看响应体的具体内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子希卡利

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值