【JavaWeb】Day24.Web入门——HTTP协议(一)

HTTP协议——概述

1.介绍

HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。

  • http是互联网上应用最为广泛的一种网络协议
  • http协议要求:浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输

如果想知道http协议的数据传输格式有哪些,可以打开浏览器,点击`F12`打开开发者工具,点击`Network`来查看。

浏览器向服务器进行请求时:  服务器按照固定的格式进行解析

服务器向浏览器进行响应时:浏览器按照固定的格式进行解析

 所以,学习HTTP主要就是学习请求和响应数据的具体格式内容。

2.特点

HTTP协议的特点:

  • 基于TCP协议:       TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全
  • 基于请求-响应模型:         一次请求对应一次响应(先请求后响应),请求和响应是一一对应关系,没有请求,就没有响应

  • HTTP协议是无状态协议:       对于数据没有记忆能力。每次请求-响应都是独立的。无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。缺点:  多次请求间不能共享数据;优点:  速度快

 HTTP-请求协议

浏览器和服务器是按照HTTP协议进行数据通信的。

HTTP协议又分为:请求协议和响应协议

  •   请求协议:浏览器将数据以请求格式发送到服务器

  - 包括:**请求行**、**请求头** 、**请求体**

  • 响应协议:服务器将数据以响应格式返回给浏览器

  - 包括:**响应行** 、**响应头** 、**响应体**

在HTTP1.1版本中,浏览器访问服务器的两种方式:

1.GET方式的请求协议

* 请求行 :HTTP请求中的第一行数据。由:`请求方式`、`资源路径`、`协议/版本`组成(之间使用空格分隔)

    * 请求方式:GET  

    * 资源路径:/brand/findAll?name=OPPO&status=1

          * 请求路径:/brand/findAll

          * 请求参数:name=OPPO&status=1

               * 请求参数是以key=value形式出现

               * 多个请求参数之间使用`&`连接

         * 请求路径和请求参数之间使用`?`连接      

     * 协议/版本:HTTP/1.1  

* 请求头 :第二行开始,上图黄色部分内容就是请求头。格式为key: value形式

常见的HTTP请求头有:

      服务端可以根据请求头中的内容来获取客户端的相关信息,有了这些信息服务端就可以处理不同的业务需求。

比如:

       不同浏览器解析HTML和CSS标签的结果会有不一致,所以就会导致相同的代码在不同的浏览器会出现不同的效果

        服务端根据客户端请求头中的数据获取到客户端的浏览器类型,就可以根据不同的浏览器设置不同的代码来达到一致的效果(这就是我们常说的浏览器兼容问题)

        请求体 :存储请求参数( GET请求的请求参数在请求行中,故不需要设置请求体)

 2.POST方式的请求协议

  • 请求行(以上图中红色部分):包含请求方式、资源路径、协议/版本

           - 请求方式:POST

           - 资源路径:/brand

           - 协议/版本:HTTP/1.1

  • 请求头(以上图中黄色部分)  
  • 请求体(以上图中绿色部分) :存储请求参数
  •   请求体和请求头之间是有一个空行隔开(作用:用于标记请求头结束)

1.请求方式GET: 请求参数在请求行中,没有请求,如:/brand/findAllname=OPPO&status=1。GET请求大小是有限制的。

2.请求方式-POST: 请求参数在请求体中,POST请求大小是没有限制的。

3.GET请求:安全性低。原因:请求参数暴露在浏览器地址栏中。

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

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

相关文章

AI写作的力量:让你的文章焕发生机

在当今数字化时代,内容创作变得越来越重要。无论是博客文章、广告文案还是社交媒体更新,优质的文本都能吸引读者的注意力并传达信息。然而,创作过程并不总是轻松的,尤其是当我们面临灵感枯竭或时间紧迫的挑战时。这就是AI写作的力…

网站为什么要选择使用安全加速SCDN?

安全加速SCDN(安全内容交付网络)是一种网络加速服务,旨在提高网站和应用程序的性能和安全性。它使用专门的技术和基础设施来加速内容传输并保护网站免受网络攻击。 安全加速SCDN可以通过内容缓存、快速传输和动态路由技术来加速网站和应用程…

安卓调试桥ADB

Logcat 命令行工具 | Android Studio | Android Developers 什么是ADB ADB 全称为 Android Debug Bridge ,是 Android SDK (安卓的开发工具)中的一个工具,起到调试桥的作用,是一个 客户端 - 服务器端程序 。其中 …

mac m1安装和使用nvm的问题

mac m1安装和使用nvm的问题 使用nvm管理多版本node 每个项目可能用的node版本不同,所以需要多个版本node来回切换 但是最近遇到安装v14.19.0时一直安装失败的问题。 首先说明一下,用的电脑是mac M1芯片 Downloading and installing node v14.19.0... …

【Linux】开始掌握进程控制吧

送给大家一句话: 我并不期待人生可以一直过得很顺利,但我希望碰到人生难关的时候,自己可以是它的对手。—— 加缪 开始学习进程控制 1 前言2 进程创建2.1 fork函数初识2.2 fork函数返回值2.3 写时拷贝2.4 fork常规用法2.5 fork调用失败的原因…

3月23日笔记

广播域与泛洪范围是相同的 广播:在同一个泛洪范围内,强迫交换机泛洪(主动) 泛洪(被动) ARP的工作原理:ARP先通过广播发送请求包,所有收到该广播包的设备都会将其中的源IP和源MAC相…

Oracle存数字精度问题number、binary_double、binary_float类型

--表1 score是number(10,5)类型 create table TEST1 (score number(10,5) ); --表2 score是binary_double类型 create table TEST2 (score binary_double ); --表3 score是binary_float类型 create table TEST3 (score binary_float );实验一:分别往三张表插入 小数…

OpenCV 形态学处理函数

四、形态学处理(膨胀,腐蚀,开闭运算)_getstructuringelement()函数作用-CSDN博客 数字图像处理(c opencv):形态学图像处理-morphologyEx函数实现腐蚀膨胀、开闭运算、击中-击不中变换、形态学梯度、顶帽黑帽变换 - 知乎…

QT(3/25)

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示“登录成功”,提供一个OK按钮,用户点击OK后,关闭登录界面,跳转到其他界面。 如果账号和密码不匹配&#…

代码随想录学习Day 20

669.修剪二叉搜索树 题目链接 讲解链接 思路&#xff1a;采用递归方法&#xff0c;若root.val > high&#xff0c;判断左子树是否为空&#xff0c;若不空&#xff0c;递归遍历左子树&#xff0c;若空就返回null&#xff1b;若root.val < low&#xff0c;则判断右子树是…

C#——系统学习(类与对象)

类&#xff08;Class&#xff09; 定义与作用&#xff1a; 类是C#中的一种用户自定义类型&#xff0c;它是面向对象编程的核心元素之一。类是一种蓝图或者模板&#xff0c;它描述了一类具有相同特性和行为的事物。类通常包含以下部分&#xff1a; 字段&#xff08;Fields&…

JAVA面试八股文之集合

JAVA集合相关 集合&#xff1f;说一说Java提供的常见集合&#xff1f;hashmap的key可以为null嘛&#xff1f;hashMap线程是否安全, 如果不安全, 如何解决&#xff1f;HashSet和TreeSet&#xff1f;ArrayList底层是如何实现的&#xff1f;ArrayList listnew ArrayList(10)中的li…

Day24:私信列表、私信详情、发送私信

测试用户&#xff1a;用户名aaa 密码aaa 查询当前用户的会话列表&#xff1b;每个会话只显示一条最新的私信&#xff1b;支持分页显示。 首先看下表结构&#xff1a; conversation_id: 用from_id和to_id拼接&#xff0c;小的放前面去&#xff08;因为两个人的对话应该在一个会…

Siemens S7-1500TCPU 运动机构系统功能简介

目录 引言&#xff1a; 1.0 术语定义 2.0 基本知识 2.1 运动系统工艺对象 2.2 坐标系与标架 3.0 运动机构系统类型 3.1 直角坐标型 3.2 轮腿型 3.3 平面关节型 3.4 关节型 3.5 并联型 3.6 圆柱坐标型 3.7 三轴型 4.0 运动系统的运动 4.1 运动类型 4.1.1 线性运动…

ssh 启动 docker 中 app, docker logs 无日志

ssh 启动 app, 标准输出被重定向 ssh 客户端&#xff0c;而不是 docker 容器的标准输出。只需要在启动时把app 标准输出重定向到 docker标准输出。 测试如下&#xff1a; 1.启动 docker docker run -it -p 60022:22 --name test test:v4 bash -c "service ssh restart;…

C# —— 系统学习(控制结构)

下面时所有控制结构的实例与解析 条件分支结构 - if-else int score 85; if (score > 90) {Console.WriteLine("优秀"); else if (score > 80) {Console.WriteLine("良好"); } else {Console.WriteLine("合格"); } 这段代码使用的是if-…

新手体验OceanBase社区版V4.2:离线部署单节点集群

本文源自OceanBase用户的分享 先简单总结如下&#xff1a; 1.本文适合初学者体验OceanBase社区版 v4.2.2 2.仅需准备一台配置为2C/8G的Linux虚拟机 3.通过离线方式安装&#xff0c;以便更直观地了解安装过程 一、Linux系统准备 在宿主机(即你的windows PC电脑)上安装vbox软…

【JavaEE初阶系列】——多线程案例四——线程池

目录 &#x1f6a9;什么是线程池 &#x1f388;从池子中取效率大于新创建线程效率(why) &#x1f6a9;标准库中的线程池 &#x1f388;为什么调用方法而不是直接创建对象 &#x1f388;工厂类里的方法 &#x1f4dd;newCachedThreadPool() &#x1f4dd;newFixedThread…

【微服务】Nacos(配置中心)

文章目录 1.AP和CP1.基本介绍2.说明 2.Nacos配置中心实例1.架构图2.在Nacos Server加入配置1.配置列表&#xff0c;加号2.加入配置3.点击发布&#xff0c;然后返回4.还可以编辑 3. 创建 Nacos 配置客户端模块获取配置中心信息1.创建子模块 e-commerce-nacos-config-client50002…

Matlab之求直角坐标系下两直线的交点坐标

目的&#xff1a;在直角坐标系下&#xff0c;求两个直线的交点坐标 一、函数的参数说明 输入参数&#xff1a; PointA&#xff1a;直线A上的点坐标&#xff1b; AngleA&#xff1a;直线A的倾斜角&#xff0c;单位度&#xff1b; PointB&#xff1a;直线B上的点坐标&#xf…