HTTP协议要点总结

一、什么是 HTTP 协议

1. 超文本传输协议 (HTTP HyperText Transfer Protocol) 是互联网上应用广泛的一种网络协议。
是工作在 tcp/ip 协议基础上的 , 所有的 WWW 文件都遵守这个标准。
2. http1.0 短连接 http1.1 长连接

 3. http TCP/IP 协议的一个应用层协议,http 也是我们 web 开发的基础.

二、快速入门 HTTP 协议

1. 看一个 hi.html 页面
<h1>hello, http</h1>
2. 使用火狐浏览器抓取 Http 请求和相应数据包 [ 演示 ]
快捷键 ctrl+shift+i

3. 使用 chrome 浏览器抓取 Http 请求和相应数据包[演示] 

 4. 画出 http 请求 hi.html UML 时序图

三、页面请求的一个问题(分析)

  创建 test.html 页面
<h1>abc</h1>
<img src="1.jpg"/>
<img src="2.jpg"/>
当访问 test.html 页面时 , 问浏览器发出几次 http 请求 ?
1 次, 2 次, 3
答:一共 3
解读:
(1) 第一次请求的 test.html
(2) 当浏览器解析发现 test.html 中有 < img src ="imgs/1.png" width ="300px" >
< img src ="imgs/2.png" >
(3) 会向服务器继续发请求,要 1.png 2.png, 一共 3
抓包说明

 四、HTTP 请求包分析(GET)

1. HTTP 请求包分析 (GET) , 说明 可以通过浏览器抓包分析
  请求行
  请求头
2. 说明: HTTP 请求 (GET)- 有数据 提交情况 WEB 程序员要学会分析 Http ! 【】

案例说明:

 

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<form action="http://localhost:8080/http/login" method="get">
u: <input type="text" name="username"/><br/>
p: <input type="password" name="pwd"/><br/>
<input type="submit" value="用户登录"> <input type="reset" value="清空">
</form>
</body>
</html>

 

package com.hspedu.http;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;public class haha extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter writer = response.getWriter();writer.print("<h1>登录成功~</h1>");writer.flush();writer.close();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {}
}
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.hspedu.http.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
完成测试,并抓包分析

五、HTTP 请求包分析(POST)

案例说明:

1.  修改 login.html, 将提交方式改成 post
2. 完成测试 , HTTP 请求包分析 (POST)

 六、GET 请求 POST 请求分别有哪些?

● GET 请求有哪些

1. form 标签 method=get [ 指定]
2. a 标签
3. link 标签引入 css [ get 方式来获取资源]
4. Script 标签引入 js 文件 [ get 方式来获取资源]
5. img 标签引入图片 [ get 请求来获取图片]
6. iframe 引入 html 页面 [ 不演示]
7. 在浏览器地址栏中输入地址后敲回车 [ 用的比较多]

 ● POST 请求有哪些

1. form 标签 method=post

● HTTP 请求中怎样选择 Get Post 方式

说明:在大部分情况下,我们不需要考虑这个问题,因为业务本身就会自动区别,
比如你要显示图片,引入 css/js 这个天然的就是 get 请求,比如你登录,发帖,上传文
件, 你就会使用 post( 感情的自然流露 )
传输的数据大小区别
1) get 传送的数据量较小。不能大于 2KB( 不同浏览器不一样 )
2) post 传送的数据量较大。一般默认不受限制。
什么情况下使用 post 请求
1) post 请求是会在浏览器上隐藏參数部分的,在安全要求的部分都会使用到 POST 请求。
如用户登录。数据增上改等等。都会把參数隐藏起来,这样就不会通过你的请求暴露你
的參数格式。
比方: del?id=1 ,别人就能够用 del?id=3 来删除你其它数据。
2) 在向 server 传递数据较大的时候。使用 POST get 是有限制的 , 比如发帖 , 上传文件
什么情况下使用 get 方式呢
1) 在前台页面展示,比如分页内容等,可以保留传递参数 , 可用来非常好的分享和传播 ,
POST 中链接地址是不变化的
建议:
1) get 方式的安全性较 Post 方式要差些。包括机密信息的话。建议用 Post 数据提交方式;
2) 在做数据查询时。建议用 Get 方式;而在做数据加入、改动或删除时,建议用 Post
方式

七、HTTP 响应包分析

● HTTP 响应包括 3 个部分

1. 响应行
2. 响应头
3. 响应体

● HTTP 响应包分析图

八、常用的状态码说明

状态行
1. 格式: HTTP 版本号 状态码 原因叙述 <CRLF>
2. 举例: HTTP/1.1 200 OK、
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为
5 类,如下所示:

 1.演示 302 状态码使用

1.举例说明 302 状态码的使用
1) 浏览器请求 T1Servelt
2) T1Servlet 返回 302 的状态码 , 并且指定浏览器重定向到 hi.html
3) 浏览器发出第二次请求 hi.html
2. 代码写完
3. 测试抓包
package com.hspedu.http.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class T1Servlet extends HttpServlet {//这里我们把 doGet和doPost合并处理protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//如果有一个请求来//重定向到hi.html//(1) 返回302状态码 (2) 响应头Location:/hi.html//response.sendRedirect("/http/hi.html");response.sendRedirect("http://www.baidu.com");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}

2.演示 304 状态码使用

当我们请求资源的时,服务器会返回该资源的最近修改时间
Last-Modified: Mon, 21 Feb 2022 04:51:31 GMT
如果浏览器禁用缓存 , 这个 Last-Modified: 信息就没有使用 , 浏览器就每次要求返回该资源
1. 如果浏览器没有禁用缓存 , 浏览器在请求时,就会 If-Modified-Since: Mon, 21 Feb 2022 04:51:31 GMT, 含义(1 ) 告诉服务器我有该资源 (2) 该资源的最近修改时间是 Mon, 21 Feb 2022 04:51:31
GM
2. 这时服务器就会比较时间,如果服务器的资源更新, 就会返回该资源 , 如果发现没有修改,就返回 304 状态码( 但是不会返回该资源 ) http 请求机制

九、MIME 类型

1.MIME 介绍

1.MIME HTTP 协议中数据类型。 MIME 的英文全称是 "Multipurpose Internet Mail Extensions" 多功能 Internet 邮件扩充服务。 MIME 类型的格式是 " 大类型 / 小类型 " ,并与某一种文件的扩展名相对应
2. 在响应包的 Content-Type 就有指定 , 如图

2.常见的 MIME 类型

 

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

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

相关文章

react实现转盘抽奖功能

看这个文章不错&#xff0c;借鉴 这个博主 的内容 样式是背景图片直接&#xff0c;没有设置。需要的话应该是 #bg { width: 650px; height: 600px; margin: 0 auto; background: url(turntable-bg.jpg) no-repeat; position: relative; } img[src^"pointer"] {positi…

马斯克称首位受试者可凭思维操控鼠标;字节低调推出视频模型丨 RTE 开发者日报 Vol.148

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

微信小程序uniapp校园在线报修系统维修系统java+python+nodejs+php

管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.用户管理&#xff1a;对注册的用户信息进行删除&#xff0c;查询&#xff0c;添加&#xff0c;修改 4.维修工管理&#xff1a;对维修工信息进行添加&#xff0c;修…

SpringBoot+MybatisPlus+Mysql实现批量插入万级数据多种方式与耗时对比

场景 若依前后端分离版本地搭建开发环境并运行项目的教程&#xff1a; 若依前后端分离版手把手教你本地搭建环境并运行项目_本地运行若依前后端分离-CSDN博客 若依前后端分离版如何集成的mybatis以及修改集成mybatisplus实现Mybatis增强&#xff1a; https://blog.csdn.net…

28/100二叉树的中序遍历 29/100不同的二叉搜索树(TODO) 30/100验证二叉搜索树 31/100对称二叉树

题目&#xff1a;28/100 二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() …

gitlab 项目上线,项目上线后回滚

gitlab 项目上线&#xff0c;项目上线后回滚 1.需要自己有个gitlab项目环境&#xff0c;没有找我&#xff0c;docker-compose 一键环境启动 2.发起合并请求3.选择合并的分支4.点击创建合并&#xff0c;然后确认合并合并完成&#xff0c;进行回滚操作&#xff0c;在合并详情页…

Vue | (三)使用Vue脚手架(下)| 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;Vue 中的自定义事件&#x1f407;使用方法&#x1f407;案例练习&#x1f407;TodoList案例优化 &#x1f4da;全局事件总线&#x1f407;使用方法&#x1f407;案例练习&#x1f407;TodoList案例优化 &#x1f4da;消息订阅与发布&#x1f407;使用方法…

压缩感知常用的测量矩阵

测量矩阵的基本概念 在压缩感知&#xff08;Compressed Sensing&#xff0c;CS&#xff09;理论中&#xff0c;测量矩阵&#xff08;也称为采样矩阵&#xff09;是实现信号压缩采样的关键工具。它是一个通常为非方阵的矩阵&#xff0c;用于将信号从高维空间映射到低维空间&…

10、内网安全-横向移动域控提权NetLogonADCSPACKDC永恒之蓝

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正&#xff01; 背景&#xff1a; 主要针对内网主机中的 域控提权漏洞&#xff0c;包含漏洞探针和漏洞复现利用。 1、横向移动-系统漏洞-CVE-2017-0146&#xff08;ms17-010&#xff0c;永恒之蓝&#xff0…

彩虹工具网程序开源未加密版源码,支持插件扩展

全新UI彩虹站长在线工具箱系统源码下载 全开源版本 支持暗黑模式 支持高达72种站长工具、开发工具、娱乐工具等功能。本地调用API、自带免费API接口&#xff0c; 是一个多功能性工具程序支持后台管理、上传插件、添加增减删功能 下载地址你别走吖 Σ(っ Д ;)っ (chaobiji.c…

Android13 编译ninja failed with: exit status 137

描述 现象很奇怪&#xff0c;主机是ubuntu 18.04&#xff0c; 内存有32G&#xff0c;并且系统中有两份Android13代码&#xff0c; 有一份编译正常&#xff0c;另外一份编译不正常&#xff0c;一度以为是因为下载源码不齐全导致&#xff0c;后面仔细看日志&#xff0c;原来是内…

Windows Server 2012 安装

1.镜像安装 镜像安装:Windows Server 2012 2.安装过程(直接以图的形式呈现) 2012激活秘钥:J7TJK-NQPGQ-Q7VRH-G3B93-2WCQD

WatiN——Web自动化测试(一)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

Linux:gitlab创建组,创建用户,创建项目

创建组和项目 让后可以在组里创建一个个仓库 创建成员 我创建个成员再把他分配进这个组里 进入管理员 密码等会我们创建完用户再去配置密码 Regular是普通的用户&#xff0c;只可以正常去访问指定规则的项目 而下面的administrator就是管理员&#xff0c;可以随便进项目&…

基于springboot+vue的B2B平台的购物推荐网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

基于Web的网文管理系统

项目&#xff1a;基于Web的网文管理系统 伴随着时代的更替&#xff0c;我国人民的生活水平在不断提高&#xff0c;同时对生活娱乐的需求也在不断加大&#xff0c;我们在日常生活中通常会以多种方式娱乐自己&#xff0c;而阅读网络小说就是其中一种方式。随着计算机技术的成熟&a…

外包实在是太坑了,划水三年,感觉人都废了

先说一下自己的情况&#xff0c;专科生&#xff0c;19年通过校招进入杭州某个外包软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了3年的功…

数据结构第3章 串

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 0、思维导图1、基本概念1&#xff09;主…

vue3 element-plus 省市区选择器组件封装

文章目录 前言一、省市区数据源处理二、AreaSelect省市区选择器组件封装三 、页面使用 前言 vue3封装一个省市区选择器组件&#xff0c;通过element-plus Cascader 级联选择器实现&#xff0c;效果如下&#xff1a; 一、省市区数据源处理 data.js var areaList {province_…

Unity NavMesh 清除不可行走区域

通常场景中物体设置为static或Navigation Static后&#xff0c;打开Navigation使用默认设置烘焙NavMesh&#xff0c;模型顶部和底部会出现蓝色网格&#xff0c;但其中有部分属于不可能到达区域&#xff0c;如下图 本文介绍两种可去掉NavMesh中不需要网格的方法&#xff1a; 方…