http请求响应详解

http介绍

http协议:

Http”协议称为是“超文本传输协议”(HTTP-Hypertext transfer protocol)。它定义了浏览器怎么向万维网服务器请求万维网文档,以及服务器怎么样把文档传送给浏览器。

https协议:

传统的HTTP协议,数据是以明文的形式在网络上传输,意味着一些重要信息(如账户信息、支付信息)可能会被有心人攻击造成泄露。而为了解决这个问题,HTTPS通过使用安全套接字层(SSL,Secure Sockets Layer)或传输层安全(TSL,Transport Layer Security)协议对HTTP进行加密,从而在数据传输过程中提供加密和认证保护。

curl命令:

使用 -v(verbose)选项可以查看请求和响应的详细信息,包括请求头和响应头:

curl -v http://example.com

使用 -O 选项下载文件并保存为原始文件名:

yum源

CentOS

curl -O http://example.com/file.zip

#下载yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tencent.com/repo/centos7_base.repo

curl -I 命令用于发送 HTTP HEAD 请求,并仅获取响应头,而不下载响应体。

curl -I http://example.com

curl -i 命令用于发送 HTTP 请求并显示响应的 HTTP 头和响应体。

curl -i http://example.com

HTTP请求格式

请求行(Request line):包括请求方法、URL和协议版本。

请求方法(Request method):表示要执行的操作,常见的方法有GET、POST、PUT、DELETE等。
URL(Uniform Resource Locator):表示要访问的资源路径。

[root@VM-4-14-centos ~]# curl -v www.baidu.com
* About to connect() to www.baidu.com port 80 (#0)
*   Trying 180.101.50.188...
* Connected to www.baidu.com (180.101.50.188) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
 

在这个示例中:

请求行包括GET方法URL为/ 协议版本为HTTP/1.1

请求头部包括HostUser-AgentAccept、等字段。

请求体为空,因为这是一个GET请求。

Http响应格式

  • 状态行:HTTP/1.1 200 OK 表示HTTP版本是1.1,状态码是200,表示请求成功。
  • 响应头部:包含日期、服务器类型、内容长度和内容类型等信息。
  • 空行:头部和响应体之间的空行。
  • 响应体:实际返回的数据,这里是一个简单的HTML页面。

< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Wed, 06 Nov 2024 18:42:59 GMT
< Etag: "588603eb-98b"
< Last-Modified: Mon, 23 Jan 2017 13:23:55 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content                                                                       =IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r                                                                       /www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div cla                                                                   

常见的http请求:

GET:用于从服务器获取资源,也是最常见的请求方式。GET请求将请求的参数附加在URL的末尾,发送给服务器。
POST:用于向服务器提交数据,一般用于发送表单数据。POST请求将请求的参数放在请求的主体中,而不是URL中。
PUT:用于向服务器上传文件或更新资源。PUT请求会将请求的数据存储在服务器上指定的位置。
DELETE:用于删除服务器上的资源。
HEAD:用于获取服务器对资源的头部信息,而不获取实际的资源内容。
OPTIONS:用于获取服务器支持的请求方法。
 

post与get的区别

应用层协议里的 GET 和POST 有啥区别,GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。长的说:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok

GET 请求的数据会附在URL 之后(就是把数据放置在 HTTP 协议头中),以?分割URL 和传输数据,参数之间以&相连,如:login.action?name=zhagnsan&password=123456。POST 把提交的数据则放置在是 HTTP 包的包体中。

实验演示区分get与post请求

区别:

1.get请求方式,表单中的消息会在url中暴露,参数有限制,因为url不能太长。

简单的 HTML 页面,使用 GET 请求提交姓名和密码

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简单的 GET 请求示例</title>
</head>
<body>

    <h1>用户信息</h1>
    <form action="https://example.com/api" method="GET">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name" required>
        <br><br>
        <label for="password">密码:</label>
        <input type="password" id="password" name="password" required>
        <br><br>
        <button type="submit">提交</button>
    </form>

</body>
</html>

post请求:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>POST 请求示例</title>
</head>
<body>

    <h1>用户信息</h1>
    <form action="https://httpbin.org/post" method="POST">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name" required>
        <br><br>
        <label for="password">密码:</label>
        <input type="password" id="password" name="password" required>
        <br><br>
        <button type="submit">提交</button>
    </form>

</body>
</html>
~

查看请求体

在请求详情中,找到“请求负载”(Request Payload)或“表单数据”(Form Data)部分。这部分将显示您提交的所有数据,包括字段名称和对应的值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

直播系统搭建教程安装说明

需要安装的软件(宝塔【软件商店】中查找安装): 1.PHP7.0 ~ PHP7.3 需要安装的扩展:(宝塔【PHP管理】【安装扩展】中安装) *PDO PHP Extension * MBstring PHP Extension * CURL PHP Extension * Mylsqi PHP Extension * Redis PHP Extension * fileinfo PHP Extension …

redis7学习笔记

文章目录 1. 简介1.1 功能介绍1.1.1 分布式缓存1.1.2 内存存储和持久化(RDBAOF)1.1.3 高可用架构搭配1.1.4 缓存穿透、击穿、雪崩1.1.5 分布式锁1.1.6 队列 1.2 数据类型StringListHashSetZSetGEOHyperLogLogBitmapBitfieldStream 2. 命令2.1 通用命令copydeldumpexistsexpire …

51c~C语言~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12428240 一、C语言和C的区别 ​ C语言虽说经常和C在一起被大家提起&#xff0c;但可千万不要以为它们是一个东西。现在我们常用的C语言是C89标准&#xff0c;C是C99标准的。C89就是在1989年制定的标准&#xff0c;如今最新…

【论文解读】EdgeYOLO:一种边缘实时目标检测器(附论文地址)

论文地址&#xff1a;https://arxiv.org/pdf/2302.07483 这篇文章的标题是《EdgeYOLO: An Edge-Real-Time Object Detector》&#xff0c;由中国北京理工大学的Shihan Liu、Junlin Zha、Jian Sun、Zhuo Li和Gang Wang共同撰写。这篇论文提出了一个基于最新YOLO框架的高效、低复…

基于SSM的企业管理系统(源码+lw+调试+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【MyBatis源码】CacheKey缓存键的原理分析

文章目录 Mybatis缓存设计缓存KEY的设计CacheKey类主体CacheKey组成CacheKey如何保证缓存key的唯一性 Mybatis缓存设计 MyBatis 每秒过滤众多数据库查询操作&#xff0c;这对 MyBatis 缓存键的设计提出了很高的要求。MyBatis缓存键要满足以下几点。 无碰撞&#xff1a;必须保证…

Mac M1 Docker创建Rocketmq集群并接入Springboot项目

文章目录 前言Docker创建rocketmq集群创建rocketmq目录创建docker-compose.yml新增broker.conf文件启动容器 Springboot 接入 rocketmq配置maven依赖修改appplication.yml新增消息生产者新增消费者测试发送消息 总结 前言 最近公司给配置了一台mac&#xff0c;正好有时间给装一…

pycharm小游戏贪吃蛇及pygame模块学习()

由于代码量大&#xff0c;会逐渐发布 一.pycharm学习 在PyCharm中使用Pygame插入音乐和图片时&#xff0c;有以下这些注意事项&#xff1a; 插入音乐&#xff1a; - 文件格式支持&#xff1a;Pygame常用的音乐格式如MP3、OGG等&#xff0c;但MP3可能需额外安装库&#xf…

使用Rust实现http/https正向代理

相关库的安装 利用vcpkg安装openssl库 vcpkg install openssl:x64-windows并设置openssl库位置的环境变量 $Env:OPENSSL_DIR"D:/vcpkg/packages/openssl_x64-windows/"安装openssl软件&#xff0c;因为需要利用openssl生成自签名证书 Cargo依赖 [dependencies] …

基于MATLAB的运动车辆跟踪检测系统

一、课题介绍 本设计为基于MATLAB的运动车辆跟踪检测系统。带有一个GUI界面&#xff0c;可以读取高速路车流视频&#xff0c;读取视频信息&#xff0c;并且统计每辆车经过左车道还是右车道&#xff0c;车速和平均速度检测&#xff0c;以及某一帧下的车流密度&#xff0c;以及最…

微深节能 环形运动机械定位控制系统 格雷母线

微深节能的环形运动机械定位控制系统中的格雷母线是一种高精度、无磨损的非接触式位置检测系统&#xff0c;特别适用于环形运动机械的定位控制。该系统主要由格雷母线、天线箱、电气柜等关键部件组成&#xff0c;其核心在于格雷母线这一特殊的编码线。 格雷母线的工作原理是通过…

【359】基于springboot的智慧草莓基地管理系统

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本智慧草莓基地管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?

以下是使用 Python 的爬虫技术获取淘宝天猫商品价格信息的两种常见方法&#xff1a; 方法一&#xff1a;使用 Selenium 一、环境准备&#xff1a; 安装 selenium 库&#xff1a;在命令行中运行 pip install selenium。下载浏览器驱动&#xff1a;如 ChromeDriver&#xff08;确…

定时任务——xxl-job原理与实现

摘要 本文详细介绍了分布式任务调度平台xxl-job的原理与实现。xxl-job以其开发迅速、学习简单、轻量级和易扩展的特性被广泛使用。文章概述了xxl-job的核心特性&#xff0c;包括任务的CRUD操作、动态调度、高可用性、弹性扩容缩容、丰富的触发策略、调度过期策略、阻塞处理策略…

TDengine 签约蘑菇物联,改造通用设备工业互联网平台

在当前工业互联网迅猛发展的背景下&#xff0c;企业面临着日益增长的数据处理需求和智能化转型的挑战。通用工业设备的高能耗问题愈发突出&#xff0c;尤其是由这些设备组成的公辅能源车间&#xff0c;亟需更高效的解决方案来提升设备运行效率&#xff0c;降低能源消耗。为此&a…

【业务】支付总结和GP支付功能测试

背景 我个人支付相关内容测试很少&#xff08;不是你想接什么业务就能接到&#xff0c;都是各方利益博弈以后结果&#xff09;&#xff0c;有些内容也是听听技术会议&#xff0c;看看其他qa的xmind通过只言片语里面做个总结。 支付类型 直连支付 概述&#xff1a;提供支付接…

2024中国国际数字经济博览会:图为科技携明星产品引领数智化潮流

10月24日&#xff0c;全球数智化领域的目光齐聚于中国石家庄正定&#xff0c;一场关于数字经济未来的盛会—2024中国国际数字经济博览会在此拉开帷幕。 云边端算力底座的领航者&#xff0c;图为科技携其明星产品惊艳亮相&#xff0c;期待与您共赴一场数智化的非凡之旅&#xff…

ESP32 gptimer通用定时器初始化报错:assert failed: timer_ll_set_clock_prescale

背景&#xff1a;IDF版本V5.1.2 &#xff0c;配置ESP32 通用定时器&#xff0c;实现100HZ&#xff0c;占空比50% 的PWM波形。 根据乐鑫官方的IDF指导文档设置内部计数器的分辨率&#xff0c;计数器每滴答一次相当于 1 / resolution_hz 秒。 &#xff08;ESP-IDF编程指导文档&a…

【Python】强大的正则表达式工具:re模块详解与应用

强大的正则表达式工具&#xff1a;re模块详解与应用 在编程和数据处理中&#xff0c;字符串的处理是不可避免的一项任务。无论是从文本中提取信息、验证数据格式&#xff0c;还是进行复杂的替换操作&#xff0c;正则表达式&#xff08;Regular Expression&#xff0c;简称Rege…

IP协议知识点总结

IP协议主要分为三个 1. 地址管理 每个网络上的设备, 要能分配一个唯一的地址 2. 路由选择 小A 给小B 发消息, 具体应该走什么路线 3. 地址管理 IP 地址. 本质上是一个 32 位的整数 通常将, 32 位的整数使用点分十进制来表示, 如 192.168.1.1 一共可以表示 42 亿 9 千万个地址…