网络请求--http请求学习详解

news2024/10/6 16:19:13
写在前面:

文章目录

  • http简介
  • http报文格式
    • 请求样例
    • 响应样例
  • 起始头
    • 格式
  • 常见请求方法
    • GET
    • POST
    • RESTful风格
  • 头部字段
    • Content-Type
  • Https

http简介

http:超文本传输协议
是一种无状态,无连接,以应答式的协议,可使用扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵动的互动。

无状态是指发送请求不涉及到状态变更
因为它的每个请求都是完全独立的,每个请求包含了处理这个请求所需的完整的数据
即使在HTTP/1.1上,同一个连接允许传输多个HTTP请求的情况下
如果第一个请求出错了,后面的请求一般也能够继续处理
(当然,如果导致协议解析失败、消息分片错误之类的自然是要除外的)。

应答式也就是指询问和回答。

无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。

HTTP版本

版本介绍
HTTP0.9只接受 GET 一种请求方法
功能很少
只能发送HTML格式字符串
HTTP1.0请求方式变多,有着get、post、head等
不仅仅只能纯文本
指出请求头
开始支持cache,同一请求可以从cache里取
还有着很多新增功能
不能持久化
HTTP1.1主要新增特点为引入了持久连接,可以被多个请求复用(不用声明 Connection: keep-alive)
请求管道化、增加缓存处理、增加Host字段、支持断点传输分块传输
HTTP2.0主要特点有二进制协议、多工、头信息压缩、服务器推送

http报文格式

  • 起始头
    描述请求/响应的基本消息
  • 头部字段集合
    用key-value形式更详细的说明报文
  • 消息正文
    实际传输的数据

请求样例

可以看到起始头在最上面
下面多行是头部字段
空一行然后就是消息正文
在这里插入图片描述

响应样例

也是一样的,
在这里插入图片描述

起始头

格式

请求

请求方法URI版本换行
gethttps://cn.bing.comHTTP/1.1

响应

版本号状态码原因换行
HTTP/1.1200OK

常用的状态码

状态码状态码英文名称中文描述
200OK请求成功。一般用于GET与POST请求
204No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
206Partial Content是对资源某一部分的请求,服务器成功处理了部分GET请求,响应报文中包含由Content-Range指定范围的实体内容。
301Moved Permanently永久性重定向。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时性重定向。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址。与302类似。使用GET请求查看
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
307Temporary Redirect临时重定向。与302类似。使用GET请求重定向,会按照浏览器标准,不会从POST变成GET。
400Bad Request客户端请求报文中存在语法错误,服务器无法理解。
401Unauthorized请求要求用户的身份认证,通过HTTP认证(BASIC认证,DIGEST认证)的认证信息,若之前已进行过一次请求,则表示用户认证失败
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。也可以在服务器拒绝请求且不想说明理由时使用
500Internal Server Error服务器内部错误,无法完成请求,也可能是web应用存在bug或某些临时故障
500Not Implemented服务器不支持请求的功能,无法完成请求
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

常见请求方法

请求介绍
GET请求指定的页面信息,并返回实体主体。
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。
CONNECT能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或诊断。
PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。

GET

  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET 请求有长度限制,不同浏览器的长度限制不同
  • GET 请求只应当用于取回数据

POST

  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求

RESTful风格

RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用 XML 格式定义或 JSON 格式定义。最常用的数据格式是JSON。由于JSON能直接被JavaScript读取,所以,使用JSON格式的REST风格的API具有简单、易读、易用的特点。

原则

  1. 基于资源,将数据和功能抽象成资源,并通过URI来唯一标识资源。例如,一个用户资源可以通过URL“/users/{id}”来访问,其中“{id}”表示该用户的唯一标识符。
  2. 使用HTTP动词来表示对资源的操作
动词功能
GET获取资源
POST创建资源
PUT更新资源
DELETE删除资源
  1. 无状态。在一个REST系统中,服务端并不会保存有关客户的任何状态。也就是说,客户端自身负责用户状态的维持,并在每次发送请求时都需要提供足够的信息。
  2. 可缓存。REST系统需要能够恰当地缓存请求,以尽量减少服务端和客户端之间的信息传输,以提高性能。
  3. 统一的接口。一个REST系统需要使用一个统一的接口来完成子系统之间以及服务与用户之间的交互。这使得REST系统中的各个子系统可以独自完成演化。

实例
如对用户表user
那么

功能方式urlbody
获取所有用户get/user
获取id=1get/user/1
添加用户post/user用户信息
修改用户update/user用户信息
删除id=1delete/user/1

头部字段

头部字段是key-value的形式,key和value用:分割,最后用CRLF换行表示字段的结束。

通用标头

标头说明
Date报文创建日期
Cache-Control控制缓存行为
Connection连接控制持久连接,事务完成后不关闭网络连接 : Connection: keep-alive
非持久连接,事务完成后关闭网络连接: Connection: close
Content-Type表示后面的文档属于什么MIME类型application/x-www-form-urlencoded

请求标头

标头说明
Host指明了服务器的域名及服务器监听的TCP端口号。Host: zuzuche.com
Accept浏览器可接受的MIME类型。application/json, text/javascript
Referer告诉服务器该网页是从哪个页面链接过来。
Accept-Encoding浏览器能够进行解码的数据编码方式gzip, deflate
Accept-Charset规定服务器处理表单数据所接受的字符集。常用字符集有 UTF-8-Unicode等
Accept-Language告知服务器用户代理能够处理的自然语言集。
Authorization告知服务器客户端的Web认证信息。
User-Agent告知服务器HTTP 客户端程序的信息。如判断是否是用微信客户端就是通过这个来的。
Cookie包含先前由服务器使用 Set-Cookie 标头发送存储的 HTTP cookie。

响应标头

标头说明
Keep-Alive表示Connection 非持续链接的存活时间。
Set-Cookie用于服务器想客户端发送sessionID。
Transfer-Encoding规定了传输报文主题时采用的编码方式。
Location令客户端重定向至指定的URI。
WWW-Authenticate表示服务器对客户端的认证信息。

Content-Type

一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,
决定浏览器将以什么形式、什么编码读取这个文件,

语法格式

Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something

常见格式

格式介绍
text/htmlHTML格式
text/plain纯文本格式
text/xmlXML格式
application/jsonJSON格式
application/xmlXML数据格式
application/mswordWord文档格式
application/pdfPDF格式
image/gifgif图片格式
image/jpegjpg图片格式
image/pngpng图片格式
application/x-www-form-urlencodedURL编码数据格式
multipart/form-data需要在表单中进行文件上传时,就需要使用该格式
  1. application/x-www-form-urlencoded
    表单提交时,请求方式是post时,form标签的属性entry=”application/x-www-form-urlencoded“(这也是默认值)
    把处于form标签里的表单元素的内容组织成键值对的方式(key1=val1&key2=val2)。其中,键 就是每个表单元素的name属性的值;值就是表单元素的value属性的值。键和值都进行了URL的转码。并放到请求实体里面。(注意如果是中文或特殊字符如"/“、”,“、“:” 等会自动进行URL转码)。
  2. multipart/form-data
    文件上传时。既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息。
  3. application/json
    json格式进行交互

Https

https就是在http+SSL/TLS认证
也就是通过一系列的加密保证通讯的安全。保证数据不被篡改。
具体的涉及网络安全的知识。

HTTPS的缺点
HTTPS协议多次握手,导致页面的加载时间延长近50%;
HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
申请SSL证书需要钱,功能越强大的证书费用越高。
SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。

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

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

相关文章

力扣sql中等篇练习(二十三)

力扣sql中等篇练习(二十三) 1 统计实验的数量 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 有可能数据本身就不全,就需要自行创建临时表 WITH T as (SELECT Android p1,Reading e1UNIONSELECT Android p1,Sports e1UNIONSELECT Android p1,Prog…

最简单配置jenkins容器使用宿主机的docker方法

构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限 chown root:root /var/run/docker.sock chmod orw /var/run/docker.sock 添加数据卷 v…

215.数组中第 k 个最大的元素。

解题思路: 利用快排的思想,不断地将数组分成若干部分,缩小查找范围,最终找到第 k 大的元素。 1、首先,对数组进行快速排序,使得数组从大到小排序,然后返回排序后的第 k 个元素即可。 2、在快排…

关于window.print打印分页功能

平常window.print分页一般打印时用到page-break-after:always; 打印的样式设置在 <style type"text/css" media"print"></style>进行设置 但现在我想动态打印分页&#xff0c;即内容一页时打印一页&#xff0c;内容两页时打印两页。。。 现…

HBase 写入数据(Scala代码)

代码如下》》 package Flink_HBase_APLimport org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.{ConnectionFactory, Put} import org.apache.hadoop.hbase.util.Bytesobject this_one {def main(args: Array[String]): Unit…

开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门

► 相关链接&#xff1a; ① MobileIMSDK-Uniapp端的详细介绍② MobileIMSDK-Uniapp端的开发手册new&#xff08;* 精编PDF版&#xff09; 一、理论知识准备 您需要对Uniapp和Vue开发有所了解&#xff1a; 1&#xff09;Uniapp 官方入门教程2&#xff09;可能是最好的 unia…

MyBatis Plus 拦截器实现数据权限控制

一、介绍 上篇文章介绍的MyBatis Plus 插件实际上就是用拦截器实现的&#xff0c;MyBatis Plus拦截器对MyBatis的拦截器进行了包装处理&#xff0c;操作起来更加方便 二、自定义拦截器 2.1、InnerInterceptor MyBatis Plus提供的InnerInterceptor接口提供了如下方法&#x…

SpringCloud 集成 Eureka Server

SpringCloud 集成 Eureka Server 1 pom.xml2 application.yml3 appliction.java4 启动 Eureka的优点&#xff1a; 简单易用&#xff1a;Eureka设计简单&#xff0c;容易上手和部署。 高可用性&#xff1a;Eureka支持高可用性配置&#xff0c;通过使用多个Eureka服务器实例来提…

IEEE Robotics and Automation Letters(RA-L)与ICRA投稿

一 总体感受 RAL不愧未短平快的论文&#xff0c;从接收论文、送审和复审都相当快&#xff0c;我的两个多月出最终接收结果&#xff0c;期刊官网规定6个月内出最终结果。作为现在IEEE主推的短文&#xff0c;限制在8页以内&#xff0c;在6页以上时超页费为175刀/页&#xff0c;目…

平台使用篇 | 批处理(bat)脚本使用教程(二)

导读 BAT脚本提供了一种快速且有效的自动化方式&#xff0c;使用户能够更轻松地处理大量的任务&#xff0c;并且可以根据需要自由地调整和修改脚本。本讲简要介绍了批处理技术及其常用命令。本篇教程主要对批处理技术的语言特点和编程思路进行重点讲解。 RflySim平台更多学习资…

Flutter-Drawer使用

drawer Drawer是Android开发中Material风格常用的设计&#xff0c;就是我们常说的“抽屉”效果&#xff0c;一个从侧边栏拉出来的导航面板。 在Flutter使用Material风格&#xff0c;最为常用的组件之一就是Scaffold了&#xff1b;Scaffold的drawer属性是一个Widget类型的组件&…

Red Hat重置root密码

目录 前言 1、使用rd.break参数重置root密码 2、使用安装盘重置root密码 前言 我们有时会忘记linux系统的root密码&#xff0c;有的不会重置密码只能重置系统了&#xff0c;下面介绍两种重置root密码的方法 1、使用rd.break参数重置root密码 1、启动系统&#xff0c;并在…

将有序数组转换为二叉树

md这个破CSDN模板怎么没了&#xff0c;编辑器也死难用&#xff0c;气死 1、题目 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不…

如何免费使用ChatGPT,提高开发效率?以开发者的角度ChatGPT能做什么?

一、如何免费使用ChatGPT 1&#xff09;登录openai官网https://openai.com/&#xff0c;注册账号后获取免费体验&#xff1b;但目前已经很难成功注册openai账号了&#xff0c;需要魔法上网的同时代理不能使用香港、俄罗斯等地区&#xff0c;需要国外邮箱和国外手机号&#xff…

企业用友NC软件被locked勒索病毒攻击,如何恢复nchome配置文件

近日&#xff0c;用友NC系统遭受了一次严重的勒索病毒攻击&#xff0c;导致许多企业的数据和配置文件被锁定。其中&#xff0c;NC Home配置文件也受到了影响&#xff0c;给企业带来了不小的损失。那么&#xff0c;在这种情况下&#xff0c;如何恢复NC Home配置文件呢&#xff1…

一个动作,直接盘活死仓库!实现效益增长200%!(附完整模板)

有人说&#xff1a;看一家工厂管理到不到位&#xff0c;看下他的仓库就知道了。 仓库作为企业存储和保管物料的重要场所&#xff0c;其管理的好坏直接影响着企业的生产与销售环节&#xff01; 我拜访过很多制造型企业&#xff0c;他们的仓库或多或少都存在以下问题—— 物料…

Hadoop的HDFS文件系统

Hadoop的HDFS文件系统 概述 Hadoop的HDFS文件系统是一种分布式文件系统&#xff0c;hadoop的核心组件之一。它的设计目标是能够在普通硬件上运行&#xff0c;并且能够处理大量的数据。HDFS采用了主从&#xff08;Master/Slave&#xff09;架构&#xff0c;其中有一个NameNode…

Adobe打印转PDF字体出错问题解决方案

错误现象 通过adobe pdf打印转换pdf时&#xff0c;不能够转换成功&#xff0c;只能弹出一个**.txt 打印——选择Adobe pdf——打印&#xff0c;txt中的内容如下&#xff1a; %%[ ProductName: Distiller ]%% %%[ Error: TT8E96441DtCID cannot be embedded because of licensi…

2023年美国大学生数学建模竞赛D题联合国可持续发展目标的优先次序解题全过程文档及程序

2023年美国大学生数学建模竞赛 D题 联合国可持续发展目标的优先次序 原题再现&#xff1a; 背景   联合国(UN)制定了17 项可持续发展目标(SDGs)。实现这些目标将最终改善世界各地许多人的 生活。这些目标不是相互独立的。因此&#xff0c;在某些目标上的积极收获通常会对其…

FM33A048B CRC

概述 循环冗余校验(Cyclic Redundancy Check&#xff0c;CRC)是最为常用的计算机和仪表数据通信的校验方法&#xff0c;FM33A048B中CRC计算单元为完全独立模块&#xff0c;通过软件控制可进行7816、I2C、UART和SPI模块有串行数据流接口的收发CRC计算和校验&#xff0c;也可进行…