笔记——学习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)   # 返回页面的编码方式

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中的Mathf.Clamp01

2025年6月8日&#xff0c;周日晚上 Mathf.Clamp01 是 Unity 中的一个数学函数&#xff0c;它的作用是将一个浮点数&#xff08;float&#xff09;限制在0 到 1的范围内。具体来说&#xff1a; 如果输入值 小于 0&#xff0c;则返回 0。 如果输入值 大于 1&#xff0c;则返回 1…

1 Studying《Linux Media Documentation》

目录 1 MEDIA SUBSYSTEM ADMIN AND USER GUIDE 1.1.2 Building support for a media device 1.1.3 Infrared remote control support in video4linux drivers 1.1.4 Digital TV 1.1.5 Cards List 1.1.5.2 PCI drivers 1.1.6 Video4Linux (V4L) driver-specifific docume…

编译原理 学习 2025年6月10日11:17:54

编译原理 将高级编程语言编写的源代码转换成机器可执行的代码(二进制或汇编代码) 核心任务: 词法分析(正则表达式和有限自动机): 示例Token分类&#xff1a;关键字&#xff1a;if, while 运算符&#xff1a;, 标识符&#xff1a;变量名 分解源代码为单词 识别 其中关键字 …

风中低语:Linux 信号处理的艺术与实践

文章目录 &#x1f307;前言&#x1f3d9;️正文1、信号的处理时机1.1、处理情况1.2、“合适” 的时机 2、用户态与内核态2.1、概念2.2、重谈进程地址空间2.3、信号的处理过程 3、信号的捕捉3.1、内核如何实现信号的捕捉&#xff1f;3.2、sigaction 4、信号部分小结 补充 5、可…

ASP.NET Core SignalR - 部分客户端消息发送

文章目录 前言一、消息发送的核心概念1.客户端标识2.消息接收范围 二、向特定用户发送消息管理员向指定用户发送私信&#xff0c;或用户之间一对一聊天。 三、向组发送消息聊天室、工作群组、通知订阅等。 四、广播消息系统公告、实时统计数据更新等。 五、向角色发送消息向管理…

前后端交互过程中—各类文件/图片的上传、下载、显示转换

前后端交互过程中—各类文件/图片的上传、下载、显示转换 图片上传下载常用函数&#xff1a;new Blob()**blobParts&#xff1a;&#xff08;必传&#xff09;****options&#xff1a;&#xff08;可选&#xff09;**blob的常见的MIME类型&#xff1a; URL.createObjectURL()替…

校园二手交易平台(微信小程序版)

文章目录 1. 项目概述2. 项目功能思维导图3. 技术架构1. 前端技术栈2. 后端技术栈 4. 核心模块实现5. 总结6. 项目实现效果截图7. 关于作者其它项目视频教程介绍 1. 项目概述 校园二手交易平台微信小程序旨在为在校学生提供一个便捷的二手物品交易渠道&#xff0c;包含用户模块…

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …

【芯片设计- RTL 数字逻辑设计入门 4.2 -- 组合逻辑赋值 + 时序逻辑状态保持】

文章目录 Overview原语句分析变量含义假设(根据命名推测)状态更新逻辑详解状态转移逻辑举个实际例子小结Overview 本文将详细介绍 verilog rtl 中 assign reg_halt_mode_nx = halt_taken | (reg_halt_mode & ~halt_return);的作用,以及这里为何要使用 reg_halt_mode,…

【单片机期末】汇编试卷

一、选择题 DPTR是16位的&#xff0c;所以寻址范围是64KB R1是8位的&#xff0c;只能寻址256 访问内部ROM只能用MOVC指令 一个指令周期是时钟周期的1/12 12个时钟周期是一个机器周期 单指令周期是指一个机器周期 T 1 / f 12MHz ~ 1us 13位计数16位计数8位自动重装载双8位计数器…

校验枚举类类型的入参合法性的统一方案

文章目录 背景解决实践定义枚举类 InEnum注解定义验证逻辑 InEnumValidator 实际使用 背景 业务要做电商平台做入参, 在电商平台被抽离成枚举类的情况下 &#xff0c;要怎么验证输入的参数是正确的呢? 解决 Constraint 实现自定义验证逻辑 Constraint 注解用于标注其他注解&am…

Unity-NavMesh详解-其一

今天我们来详细地探究一下Unity的NavMesh这一性能强大的组件&#xff1a; NavMesh基本使用 NavMesh简单地说本质上是一个自动寻路的AI组件&#xff0c;我们首先来学习基本的使用。 画面中我已经添加好了地面&#xff0c;目标&#xff0c;障碍物以及玩家四个要素。 注意我们要…

vue的created和mounted区别

在Vue.js中&#xff0c;created和mounted的核心区别在于调用时机和DOM可访问性‌&#xff1a;created钩子在组件实例创建后、DOM挂载前调用&#xff0c;适用于数据初始化&#xff1b;mounted钩子在DOM挂载后调用&#xff0c;支持DOM操作。‌‌ ‌调用时机与核心能力对比‌ ‌…

MySQL 8.0 OCP 英文题库解析(十四)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题121~130 试题1…

【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例

以下是 HarmonyOS 5 拍摄美化功能的简洁介绍&#xff0c;整合核心能力与技术亮点&#xff1a; 一、AI 影像创新 ‌AI 魔法移图‌ 系统级图像分层技术实现人物/物体自由拖拽、缩放与复制&#xff0c;突破传统构图限制。自动分离主体与背景&#xff0c;一键生成错位创意照&…

【Java多线程从青铜到王者】懒汉模式的优化(九)

懒汉模式的问题 我们看上述的代码&#xff0c;当第一次调用getIntance的时候&#xff0c;intance为null&#xff0c;就会进入if里面&#xff0c;创建出实例&#xff0c;当不是第一次调用的时候&#xff0c;此时的intandce不是null&#xff0c;不进入循环&#xff0c;直接return…

SCI期刊查重参考文献会被查重吗?

查重的时候&#xff0c;参考文献不会被查重。 不管中文还是英文查重系统里一般都有排除参考文献的设置。 比如英文查重系统iThenticate 的排除文献的设置如下&#xff1a; 在iThenticate在线报告界面的右下角点击“漏斗”图标&#xff08;Filter&#xff09;&#xff0c; ✔…

OpenLayers 获取地图状态

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图状态信息包括中心点、当前缩放级别、比例尺以及当前鼠标移动位置信息等&#xff0c;在WebGIS开发中&#xff0c;地图状态可以方便快捷的向用户展示基…

JxBrowser 8.8.0 版本发布啦!

一次调用即可下载文件精准清除浏览数据右键点击位置检测获取元素在视口中的位置 &#x1f517; 点击此处了解更多详情。 &#x1f193; 获取 30 天免费试用。

React 中的TypeScript开发范式

在 TypeScript 中使用 React 可以提高代码的可维护性、可读性和可靠性。TypeScript 提供了静态类型检查和丰富的类型系统&#xff0c;这些功能在 React 开发中非常有用。下面详细介绍如何在 React 项目中使用 TypeScript&#xff0c;并结合泛型和 infer 来定义类型。 1. 项目初…