当前位置: 首页 > news >正文

笔记——学习HTTP协议

HTTP协议

文章目录

  • HTTP协议
    • 一、统一资源定位符(url):
      • URL编码格式:
    • 二、HTTP报文结构:
    • 三、HTTP请求方法:
    • 四、HTTP常见请求头:
    • 五、HTTP状态码:
    • 六、HTTP常见响应头:
    • 七、HTTP请求测试
      • 1.curl
      • 2.python

HTTP(HyperText Transfer Protocol)超文本传输协议,是一个应用层协议,本身无连接,使用TCP连接进行可靠的传送。是万维网客户端程序与万维网服务器程序之间进行交互的协议。

一、统一资源定位符(url):

url一般包含四个部分:<协议>://<主机>:<端口>/<路径>

url格式:协议://用户名:密码@子域名.域名.顶级域名:端口/目录/文件名.文件后缀?参数=值#锚部分

URL编码格式:

url编码表:
HTML URL 编码参考手册 | 菜鸟教程

  • 只有字母和数字[0-9a-zA-Z]、一些特殊符号”$-_.+!*’(),”[不包括双引号],以及某些保留字,才可以不经编码直接用于url
  • 同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会收到影响。可以说web是构建在同源策略基础上的,浏览器只是针对同源策略的一种体现。
  • url格式中,协议,主机,端口三部分相同,才能算是同源。

二、HTTP报文结构:

  1. 请求报文——从客户向服务器发送请求报文。
    请添加图片描述

    请求行:方法 目标路径 协议版本
    首部行(请求头):用来说明浏览器、服务器或报文主体的一些信息。
    请求主体:在请求报文中一般不用

  2. 响应报文——从服务器到客户的 回答。
    请添加图片描述

    • 状态行:版本 状态码 描述
    • 首部行(响应头)
    • 实体主体

三、HTTP请求方法:

  • 根据HTTP标准,HTTP请求可以使用多种请求方法
  • HTTP1.0定义了三种请求方法:GET,POST和HEAD方法
  • HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法
序号方法描述
1GET请求指定的页面,并返回实体主体
2HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据包含在请求体中
4PUT从客户端向服务器传送的数据取代指定的文档的内容(在指定的url下储存一个文档)
5DELETE请求服务器删除指定的页面(删除指定url所标志的资源)
6CONNECT用于代理服务器
7OPTIONS允许客户端查看服务器的性能(获取服务器允许的HTTP请求方法)
8TRACE回显服务器收到的请求,主要用于测试或诊断
9PATCH是对PUT方法的补充,用来对已知资源进行局部更新

四、HTTP常见请求头:

字段描述
Accept指定客户端能够接收的内容类型
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型
Accept-Language浏览器可接受的语言。例:Accept-Language:en,zh
Connection表示是否需要持久连接 // HTTP 1.1默认进行持久连接
CookieCookie是用来存储一些用户信息以便让服务器辨别用户身份的
Content-Type请求的实体的MIME信息
Host指定请求的服务器的域名和端口号
Referer表示先前网页的地址
User-Agent告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。

五、HTTP状态码:

  • HTTP状态码作用:Web服务器用来告诉客户端,发生了什么事
状态码已定义范围描述
1XX100-101表示通知信息,如收到请求,正在处理
2XX200-206表示请求成功
3XX300-307表示重定向
4XX400-417表示客户端错误,如请求中有错误的语法或不能完成请求
5XX500-505表示服务端错误,如服务器失效无法完成请求

六、HTTP常见响应头:

响应头字段描述
Allow服务器支持哪些请求方法(如GET、POST等)。
Content-Type表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。
Location表示后面的文档属于什么MIME类型
Refresh表示浏览器应该在多少时间之后刷新文档,以秒计。
Set-Cookie设置和页面关联的Cookie
Content-Location• 请求资源可替代的备用的另一地址
Content-Length响应体的长度

七、HTTP请求测试

1.curl

curl 是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具。它可以说是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

环境:

服务端:centOS 7虚拟机,开启Apache服务,IP地址:172.31.39.163

客户端:win11系统,IP地址:172.31.39.92,在"C:\Windows\System32\drivers\etc\hosts”中添加一行172.31.39.163 test.com,以使解析域名test.com为172.31.39.163

用到参数:

参数说明
(无参)直接跟域名或IP,返回页面源码
-v显示http请求头和响应头,并返回页面信息
-i可以参看请求 URL 的响应头,URL 的响应头将与响应体一起返回打印出来
-I只显示响应头
-X用来更改HTTP请求方法
—data指定post数据
-A指定User-Agent
-e指定referer
—header自行增加一个头信息

例:使用curl发送一个自定义http请求,并用-v参数显示出来

curl -X POST --data "name=data" -A "Mozilla/5.0" -e "http://127.0.0.1" --header "Content-Type:application/x-www-form-urlencoded" test.com

请添加图片描述

2.python

使用requests库请求网页资源

requests.get(url,params,headers)

requests.request(method,url)

import requestsurl = 'http://test.com'
# 用字典来作为POST表单数据
from_data = {'name': 'data'
}
# 用字典表示请求头
# header = {
#		
# }
# r = requests.get(url, params='')    # params可以用来get传参
r = requests.post(url, data=from_data, headers=header)# r = requests.request(method,url)# 选择其他请求方法
# r.encoding = '' # 指定页面的编码方式
print(r.text)  # 返回解码后的页面字符串
print(r.content)  # 以字节形式返回
print(r.status_code)  # 返回响应状态码
print(r.request.method)  # 返回请求方法
print(r.request.headers)    # 返回请求头
print(r.headers)    # 返回响应头
# print(r.cookies)    # 返回cookie
# print(r.encoding)   # 返回页面的编码方式

请添加图片描述

相关文章:

  • 前端技术 HTML iframe 详细解读
  • python 本地运行Qwen3-Embedding-0.6B 模型提供API接口
  • 从算法到系统架构:AI生成内容连贯性技术深度解析
  • 前端面试题之 Vue 专题(2025)
  • 微机原理与接口技术,期末冲刺复习资料(五)
  • 网络安全之内核初级对抗技术分析
  • 第25节 Node.js 断言测试
  • 优化篇 | 网络时延优化有哪些项
  • 2.Socket 编程 UDP
  • Yolov5.6增加注意力机制+ByterTrack:目标检测与跟踪
  • FR4 中的色散如何真正影响传播延迟?
  • Linux 文件类型,目录与路径,文件与目录管理
  • 论文分类打榜赛Baseline(2):InternLM昇腾硬件微调实践
  • Linux日志管理和时间管理
  • Cypher 查询语言完全指南(2024最新版)—— Neo4j 图数据库实战教程
  • Linux 信号机制深度解析:从基础概念到实战应用
  • React19源码系列之 事件优先级
  • Qt进阶开发:动画框架的介绍和使用
  • Java是实现大根堆
  • Camera相机人脸识别系列专题分析之十二:人脸特征检测FFD算法之libvega_face.so数据结构详解
  • 昆山企业网站制作公司/十大最靠谱培训机构
  • 商城网站的建设费用/小学生摘抄新闻
  • 益阳注册公司/免费网站分析seo报告是坑吗
  • 建设b2b2c网站/德州seo优化
  • 东莞商城网站建设哪家公司靠谱/网站seo设计方案案例
  • 成都网站建设与网站制作/百度账号客服人工电话