HTTP协议+GET/POST区别

news2024/11/15 21:36:43

1. web开发流程 

(1) HTML、CSS、JS、图片等资源通过浏览器进行整合,最终渲染出所需画面。

(2)浏览器对Web服务器进行资源请求

浏览器通过url请求资源。【HTTP协议、URL:确定唯一的一个资源】

 浏览器请求资源过程中可能出现的结果:----去书店买书

  • URL中指定的Web服务器进程不存在(主机或端口出现错误)----该地址所对应的书店不存在
  • URL连接到对应的Web服务器进程,但是路径对应的资源不存在----书店存在,书不存在
  • URL连接到Web服务器进程,并且路径对应的资源也存在,但是在处理响应的过程中,出现错误(主要发生在动态资源上)----老板当场写书,写书过程中出错
  • 一切正常,给出响应

(3) Web服务器

服务器管理诸多资源,以树形结构进行管理。资源包括静态资源和动态资源。

静态资源:提前已经把内容准备好的资源

动态资源:在请求到达后,根据实际情况,运行代码生成内容的资源

(4)以下说法较为绝对

  • 网站:多个相互关联的网页组成
  • 网页:一个HTML+其他与之关联的资源(CSS、JS、图片、其他)组成
  • 每个资源对应一个唯一的URL,浏览器每次获取一个资源,都需要向对应的Web服务器经历一次HTTP请求/响应的过程。
  • 请求一次URL对应的资源,可能成功、可能失败。
  • Web服务器以静态、动态的方式生成资源内容。

2. HTTP(Hyper Text Transfer protocol)协议

HTTP协议又称超文本传输协议,是一种应用层协议。http协议目前版本有http1.0、http1.1、http2.0(之前基于TCP实现)、http3.0 (基于UDP实现)版本,以下主要以http1.1作为重点理解。

HTTP是请求-响应工作模式:浏览器处于主动地位,服务器处于被动地位。

2.1 请求(Request)报文格式

请求的主体是客户端,是由客户端进行发起的。

请求中的内容必须有一定的格式。——Web服务器端只能看见请求中的东西。

  • 本次请求的是哪个url
  • 本次请求的动作:是从浏览器提交内容给服务器 / 浏览器从服务器取东西
  • 本次请求遵循的是哪个版本的http协议
  • 本次请求的专门的描述
  • 本次请求假如是从向服务器提交内容,则内容放在哪里?

格式:

  1. 请求行(请求方法、请求资源url(路径)、请求版本)
  2. 请求头们:请求报文的属性,冒号分隔的键值对,每组属性各占一行(Name1:Value1  Name2:Value2...)
  3. 请求体

 2.2 响应(Response)报文格式

响应的主体是服务器,由服务器被动发起的。

【注:无论资源是否存在的情况下,服务器能响应一次的请求的前提是,浏览器发起的请求满足:

主机是存在的、端口是存在的、没有防火墙阻拦网络连接】

 格式:

响应行:响应的协议版本信息+状态(状态码+状态描述)       

响应头:响应报文的属性,冒号分隔的键值对,每组属性各占一行。Name:Value\r\n...

响应体:资源的内容(一般响应是有响应体的)

2.3 HTTP报文中空行存在的原因

因为HTTP协议并没有规定报头部分的键值对有多少个,空行就相当于是“报头的结束标记”,或者是“报头和正文之间的分隔符”。

3. HTTP常用的方法

方法说明
GET获取资源
POST传输实体主体
PUT传输文件
HEAD和 GET 类似,但只返回报文首部,不返回报文实体主体部分
DELETE删除文件
OPTIONS询问支持的方法(查询指定的 URL 支持的方法)
TRACE追踪路径(服务器会将通信路径返回给客户端)
CONNECT要求用隧道协议连接代理
LINK建立和资源之间的联系
UNLINK断开连接关系

4. GET和POST的区别

  • 在浏览器地址栏输入URL,发起的是GET请求                                                                         <a href=“...”><img src="..."><link href="..."><script src="...">也是GET请求
  • post 请求发送目前有难度,只有通过from表单进行提交时采用post方法                            <form action="post"></from>

web服务器中的资源:

(1)具有唯一的路径

(2)支持的方法:

  • 对于静态资源:默认既支持get又支持post
  • 对于动态资源:一般会进行配置,没有配置过的,一般是全支持!

经典面试题:谈谈get和post的区别

  • 语义不同:GET一般用来获取数据;POST一般用于提交数据
  • GET的body一般为空,需要传递的数据通过query string传递,POST的query string一般为空,需要的数据通过body传递
  • GET请求一般是幂等的,POST请求一般是不幂等的(如果多次请求得到的结果 一样,就视为请求是幂等的)
  • GET可以被缓存,POST不能被缓存(承接幂等性)

补充说明:

  • 关于语义:GET也可以用来提交数据,POST也可以来获取数据,不过是根据字面进行更为合适而已。
  • 关于幂等性:标准建议GET实现是幂等的,但是实际应用中也未必全部遵守此规则(主流网站“猜你喜欢”功能,会根据用户的历史行为实时更新现有的结果)。
  • 关于安全性:“POST比GET更安全的说法”是不太科学的。安全与否取决于前端在传输密码等敏感信息是否进行加密操作,与GET / POST无关。
  • 关于传输数据量:“GET传输数据量小,POST传输数据量大”,这个也是不科学的。标准并未规定GET的url长度,也没有规定POST的body长度,传输数据量的多少,完全取决于不同浏览器和不同服务器之间的实现区别。
  • 关于传输数据类型:“GET 只能传输文本数据,POST可以传输二进制数据”,这个说法也是不科学 的。GET的query string虽然无法直接传输二进制数据,但是可以针对二进制数据进行url encode。

5. 关于请求报头(header)

header的整体格式是“键值对”结构,每个键值对占一行,键和值之间使用分号分割。

介绍几个常见的报头:

  • Host:表示服务器主机的地址和端口(127.0.0.1)
  • Content-Length:表示body中的数据长度
  • Content-Type:表示请求的body中的数据格式
  • User-Agent:表示浏览器/操作系统的属性
  • Referer:表示这个页面是从哪个页面跳转过来的
  • ...........

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

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

相关文章

DeepVO 论文阅读

论文信息 题目&#xff1a;DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks 作者&#xff1a;Sen Wang, Ronald Clark, Hongkai Wen and Niki Trigoni 代码地址&#xff1a;http://senwang.gitlab.io/DeepVO/ (原作者并没有开源…

驶向专业:嵌入式开发在自动驾驶中的学习之道

导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分&#xff0c;嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…

备战携程面试:Redis Master-Slave异步同步进度独家解析!

Hello 大家好&#xff0c;我是你们的小米&#xff01;今天我要和大家分享一道来自携程的面试题&#xff1a;Redis Master-Slave异步同步的话怎么判断Slave同步进度&#xff1f; Redis&#xff0c;作为一款非常火热的内存数据库&#xff0c;提供了Master-Slave的异步复制机制&a…

什么是嵌入式软件开发?

嵌入式软件一般是在交叉的开发环境下进行的&#xff0c;这样的运行环境能够让软件开发过程中更加稳定、可靠和安全&#xff0c;在很大程度上提升了软件开发的质量和效率&#xff0c;同时也使得软件开发的难度和程度大大降低。 嵌入式软件的交叉开发环境&#xff0c;反映了用于…

【数据结构篇C++实现】- 特殊的线性表 - 串

友情链接&#xff1a;C/C系列系统学习目录 文章目录 串&#x1f680;一、串的定义&#x1f680;二、串的存储结构&#x1f6f4;&#xff08;一&#xff09;串的顺序存储结构1、定长顺序存储表示2、堆分配存储表示 &#x1f6f4;&#xff08;二&#xff09;串的链式存储结构3、块…

ES6 - Iterator迭代器和for...of 循环

文章目录 前言一、Iterator介绍二、Iterator原理三、实现Iterator接口的原生对象有五、默认调用 Iterator 接口的场合六&#xff0c;for... of 循环七&#xff0c;总结 前言 JavaScript 原有的表示“集合”的数据结构&#xff0c;主要是数组&#xff08;Array&#xff09;和对…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四十二天 42/50【unordered_set】【双指针处理连续】【翻转字符串】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

优思学院|企业遇到瓶颈期怎么办?六西格玛管用吗?

企业遇到瓶颈期应该分析一下原因&#xff0c;企业内部应该和各级一起思考如何解决、如何舒缓&#xff0c;即使找管理咨询公司同样也是这样做的&#xff0c;关键是企业是否连一个领导者也没有呢&#xff1f; 企业每天都会遇到新的问题&#xff0c;是否每次都要找管理咨询公司&a…

第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator 目前网上主要有两种安装方式&#xff0c;分别为&#xff1a;1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐&#xff0c;需要手动配置yaml文件&#xff0c;特别是需要配置pvc相关内容时&#xff0c;涉及到的yaml文件太…

iOS--frame和bounds

坐标系 首先&#xff0c;我们来看一下iOS特有的坐标系&#xff0c;在iOS坐标系中以左上角为坐标原点&#xff0c;往右为X正方向&#xff0c;往下是Y正方向如下图&#xff1a; bounds和frame都是属于CGRect类型的结构体&#xff0c;系统的定义如下&#xff0c;包含一个CGPoint…

卡片布局 可左右上删除,可向下拉出上一个 支持复用

效果 支持左右上 三个方向删除内容&#xff0c;支持下拉显示上一个。支持adapter 支持复用。 使用 myLayout.setAdapter(new StackAdapter() {final int[] bgColorsnew int[]{Color.RED,Color.GREEN,Color.BLUE};Overridepublic View getView(int position, LayoutInflater …

Docker Hub和镜像仓库

目录 前言 创建存储库 推送镜像&#xff08;可选&#xff09; 搜索镜像 拉取镜像 前言 Docker Hub 是 Docker 公司提供的官方公共 Docker 镜像注册表&#xff0c;允许用户存储、分享和获取 Docker 镜像。在 Docker Hub 上&#xff0c;你可以找到许多官方和社区维护的 D…

三、前端高德地图、测量两个点之前的距离

点击测距工具可以开启测量&#xff0c;再次点击关闭测量&#xff0c;清除地图上的点、连线、文字 再次点击测量工具的时候清除。 首先 上面的功能条河下面的地图我搞成了两个组件&#xff0c;他们作为兄弟组件存在&#xff0c;所以简单用js写了个事件监听触发的对象&#xff…

JavaScript三元运算符

条件运算符&#xff08;三元运算符&#xff09;的基本结构 条件 &#xff1f; true:false例如&#xff1a; const age 20; age > 18 ? console.log("你已经成年了"):console.log("你还是一个孩子&#xff01;");我们这里把条件运算符和IF来做个区分…

高等数学中如何求间断点

高等数学中求间断点是一项重要的技巧&#xff0c;特别适用于分析函数的性质和图像的特征。在本文中&#xff0c;我们将深入探讨如何在给定函数中找到间断点&#xff0c;并解释其数学原理和实际应用。 什么是间断点&#xff1f; 在高等数学中&#xff0c;间断点是指函数在某个点…

Trello的功能、优缺点、国内使用体验,及4大类似的项目工具

1、Trello是什么软件&#xff0c;有哪些功能&#xff1b; 2、Trello的价格及国内用户的使用体验&#xff1b; 3、盘点国内同类型的项目管理软件&#xff1b; 4、对比国内工具Worktile、Teambition等工具如何。 一、Trello是什么软件&#xff0c;有哪些功能&#xff1f; 【官网…

Pytorch 最全入门介绍,Pytorch入门看这一篇就够了

本文通过详细且实践性的方式介绍了 PyTorch 的使用&#xff0c;包括环境安装、基础知识、张量操作、自动求导机制、神经网络创建、数据处理、模型训练、测试以及模型的保存和加载。 1. Pytorch简介 在这一部分&#xff0c;我们将会对Pytorch做一个简单的介绍&#xff0c;包括它…

uniapp打包本地资源使用原生安卓打包

Android安装打包 1. 安装sdk 2.安装解压openjdk到D盘 3.安装编辑器 在D盘新建文件 Androidstudio 将编辑器安装到这个Androidstudio 文件内 配置sdk路径 打包步骤&#xff1a; 1. 打开项目&#xff0c;如图&#xff1a; 2. uniapp的本地打包资源可以在 这里替换apps包下 再修…

java+springboot+mysql疫情物资管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的疫情物资管理系统&#xff0c;系统包含超级管理员&#xff0c;系统管理员、员工角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;部门管理&#xff1b;职位管理&#xff1b;员工管理&…

港联证券:股市降印花税是什么意思?股市降印花税利好还是利空?

在股票买卖过程中&#xff0c;需求交纳必定的印花税、佣钱费用和过户费用&#xff0c;那么&#xff0c;股市降印花税是什么意思&#xff1f;股市降印花税利好仍是利空&#xff1f;下面港联证券为我们预备了相关内容&#xff0c;以供参阅。 股票降印花税是指下调投资者买卖股票的…