认识http协议---3

news2024/11/25 10:32:12

在这里插入图片描述

hi,大家好,今天为大家带来http协议的相关知识

🍇1.http状态响应码

🍇2.构造http请求

1.直接在地址栏里输入一个URL

2.html的一些特殊标签,触发get请求

3.提交form表单,可以触发get请求和post请求

4.使用ajax

🍇3.再次谈同步和异步

🍇4.使用postman构造http请求

🧁1.http状态响应码

HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)
在这里插入图片描述
http的状态码是非常多,我们就挑经常见到的来讲解

第一个就是200,它代表的意思是请求成功

第二个是404 Not Found,它代表的意思是要访问的资源不存在

第三个是403 Forbidden,它代表的意思是访问被拒接(没有权限)

第四个是 500 Internal Server Error 服务器内部错误,无法完成请求

第五个是504 Gateway Time-out,服务器访问超时了

第六个是302 Move Temporarily 临时重定向。与301类似。但资源只是临时被移动。客户端应继续使用原有URL

第七个是301 Moved
Permanently 永久重定向。请求的资源已被永久的移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URL代替

针对301和302,可以给大家举个例子

就拿谈对象来说,小明和小红谈对象,有一天小明看到一个更喜欢的女孩,小芳,便抛弃小红,就去找小芳,和小芳谈了一会,觉得还是小红好,就去找小红,小明摇摆不定的状态就叫做"临时重定向",相反,小明不受外界干扰,对小红始终如一,这就是"永久重定向"

最后说一个有意思的状态码:418,又叫做彩蛋
在这里插入图片描述

这就是百度的一个彩蛋,在搜索页搜索黑洞,就会有这样的效果

🧁2.构造http请求

🍎1.直接在地址栏输入URL

在这里插入图片描述

🍎2.html的一些特殊标签,触发get请求

link标签,script标签,img标签,a标签等

在写博客系统前端页面的时候,比如页面有一个img标签,当页面被加载好,浏览器会根据img的标签的src属性给服务器发起一个get请求,来获取到图片内容,当然前提是图片内容得是网络资源

🍎3.提交form表单,可以触发get请求和post请求

使用form表单需要写代码,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>form  表单的使用</title>
</head>
<!-- action里面写的是要访问的URL -->
<body>
    <form action="http://www.sougou.com/abc/def" method="get">
        <input type="text" name="aaa">
        <input type="text" name="bbb">
        <input type="submit" value="提交">
        
    </form>
</body>
</html>

点击运行
在这里插入图片描述随意输入,点击提交
在这里插入图片描述
可以看到这样的界面,是会报404的错误的,为啥呢,因为搜狗不存在我们要访问的资源,抓个包来看看
在这里插入图片描述
我们要搞懂这个请求和form表单代码还有浏览器页面的关系

画个图
在这里插入图片描述
这就是对应关系,下面再用文字来讲解一下
先看图里面绿色的线

第一个input标签对应浏览器的第一个输入框
第二个input标签对应浏览器的第二个输入框
第三个input标签对应浏览器的提交那个框
再来看GET对应的是method那里 URL对应的是代码里那段地址
query string那里面的aaa对应的是代码里name=“aaa”,也就是说标签里的name 写成啥,query string的key就是啥,bbb同理.
value=111或者222取决于用户在输入框输入啥

以上就是对应关系,这是get请求的
=================================================我们再来说post请求的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>form  表单的使用</title>
</head>
<!-- action里面写的是要访问的URL -->
<body>
    <form action="http://www.sougou.com/abc/def" method="post">
        <input type="text" name="aaa">
        <input type="text" name="bbb">
        <input type="submit" value="提交">
        
    </form>
</body>
</html>

在这里插入图片描述
抓包可以看到这是一个post请求
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
可以看到当Content-Type的形式变成这样,就会对应这样的body格式(键值对格式),post请求的URL不在首行,跑到body里面了

我们同样搞清楚个请求和form表单代码还有浏览器页面的关系
画图
在这里插入图片描述
实和get请求的区别就是URL跑到body里面了,仅此而已

但是form只支持get和post方法put,delete,options等其他的http方法.form都不支持

🧁4.ajax构造HTTP请求

ajax是现在最主流的前后端交互方式之一
全称Asynchronous javascript and xml
ajax是前端和后端,异步交互的一种方式
js提供了原生的ajax的api,但是我们不用,因为不好用,我们采用jquery里面提供的ajax的api
在代码里要先引入jquery这个库

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ajax</title>
    <!-- 引入ajax -->
    <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
</head>
<body>
    <script>
        $.ajax({
            url:"https://www.sougou.com",//表示的是要访问的域名
            type:"post",//http方法类型,这里很灵活,啥都行
           
            success: function(body){
                //写处理响应的代码
                console.log(body);
            }
        });
    </script>
</body>
</html>

$ 是 j q u e r y 里面特殊的全局变量 , j q u e r y 所有的 a p i 都是 是jquery里面特殊的全局变量, jquery 所有的api都是 jquery里面特殊的全局变量,jquery所有的api都是$的方法
在这里插入图片描述

这是回调函数,在服务器返回一个正确的响应的时候,浏览器自动执行
在代码的js中,请求发出就不管了,继续执行后续代码,一直到响应回来,浏览器把这个响应给我们的代码(回到success回调函数,执行处理响应逻辑),也就是说我发出请求,这个consle.log(body)先不打印,先往后执行,等响应回来,我再打印!
🍧🧊🍹🍸🍭
我们也可以构造一个post请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ajax</title>
    <!-- 引入ajax -->
    <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
</head>
<body>
    <script>
        $.ajax({
            url:"https://www.sougou.com",//表示的是要访问的域名
            type:"post",//http方法类型,这里很灵活,啥都行
           data:"这是body",
           contentType:"text/plain",
            success: function(body){
                //写处理响应的代码
                console.log(body);
            }
        });
    </script>
</body>
</html>

执行结果

在这里插入图片描述
打开控制台检查
在这里插入图片描述
这个错误是ajax非常典型的问题:跨域问题
为什么会有这样的问题?

我们现在运行的ajax代码的域名是一个域名:这个是location的,location就是我们自己运行的ajax代码的域名
在这里插入图片描述
这个orign写的就是运行ajax代码的域名

ajax里面的请求,访问的域名是另一个域名,在这个代码里面访问的就是https://www.sougou,com
我们可以抓包看到
在这里插入图片描述

两个域名不一致,就会导致跨域问题
这个问题不是bug,是浏览器为了限制安全问题,引入的保护机制
防止甲网站访问乙网站的数据

(不过form 允许跨域)

form 和ajax有啥区别?
form没有跨域问题,ajax有跨域问题
form只支持get,post方法,ajax支持各种方法,更加灵活

🧁3.再谈同步和异步

异步:Asynchronous
同步:synchronized
计算机中,一个术语可能有多种含义

在加锁中:
同步: 多个线程同时访问同一资源,等待资源访问结束,就是一个资源每次都是被一个线程访问的,其他线程在这个时候一直处于一个阻塞状态,要等到其他线程释放该资源才可以继续执行
异步:其他线程在等待的这个过程中,可以去做其他事情,不是一直阻塞在这里

==================================================在IO中:
同步:请求的发起者自行获取响应(主获取结果)
异步:请求者发起响应,不关心结果,被请求的一方计算出结果,推送给发起者(被动获取结果)

举例

我来到商城看衣服,我看上了一件T恤,我可以选择自己把衣服拿下来试穿,也可以选择等服装店老板拿下来给我 第一个做法就是主动获取,就是同步
第二个做法就是被动获取,就是异步

🧁4.使用post构造http请求

我们已经学习了四种构造http请求的方法,那么可以采用不写代码也能构造的办法,那就是使用postman
用法非常简单,只要熟悉http报文格式
在这里插入图片描述
就是这个软件
写几个请求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
今天的讲解就到这里,我们下期再见,886~~~
在这里插入图片描述

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

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

相关文章

spark sql(四)物理计划解析

1、流程解析 在该系列第二篇文章中介绍了spark sql整体的解析流程&#xff0c;我们知道整体的sql解析分为未解析的逻辑计划&#xff08;Unresolved LogicalPlan&#xff09;、解析后的逻辑计划&#xff08;LogicalPlan&#xff09;、优化后的逻辑计划&#xff08;Optimized Lo…

HDFS学习笔记

HDFS1.0 1 什么是HDFS&#xff1f; HDFS的全称是&#xff1a;Hadoop DistributeFiles System&#xff0c;分布式文件系统。 在整个Hadoop技术体系中&#xff0c;HDFS提供了数据分布式存储的底层技术支持。 HDFS 由三个组件构成&#xff1a;NameNode&#xff08;NN&#xff…

排序算法:堆排序

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下栈和队列方面的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; 数据结构与算法专栏&#xff1a;数据结构与算法 个 人 …

算法|9.从暴力递归到动态规划2

9.算法|从暴力递归到动态规划2 1.数字字符串转英文字符串 题意&#xff1a;规定1和A对应、2和B对应、3和C对应…26和Z对应&#xff0c;那么一个数字字符串比如"111”就可以转化为:“AAA”、“KA"和"AK” 给定一个只有数字字符组成的字符串str&#xff0c;返回…

windows安装python开发环境

最近因工作需要&#xff0c;要学习一下python&#xff0c;所以先安装一下python的开发环境&#xff0c;比较简单 下载和安装Python 首先&#xff0c;在浏览器中打开Python的官方网站&#xff08;https://www.python.org/downloads/) 然后&#xff0c;从该网站下载与你的操…

NCI架构-1

1、NFCC和DH通过物理连线相连&#xff0c;物理连线对应为Transport Layer&#xff08;传输层&#xff09;&#xff0c;支持SPI、I2C、UART、USB等&#xff1b; 2、DH中所有和NFC相关的应用程序都可视为DH-NFCEE(EE:Execution Enviroment)&#xff0c;图左的NFCEE模块可运行一些…

Linux系统中源码安装1.8.x版本Arduino IDE

本文内容参考&#xff1a; Ubuntu22.04安装Arduino IDE及Arduino UNO&#xff08;使用CH341驱动&#xff09;调试方法__KILLMILEDC_的博客-CSDN博客 在Linux上下载arduino_不说话的白帽子的博客-CSDN博客 https://guoqing.blog.csdn.net/article/details/88913063?spm1001.…

【JVM】8. 对象实例化及直接内存

文章目录 8.1. 对象实例化8.1.1. 创建对象的方式8.1.2. 创建对象的步骤1. 判断对象对应的类是否加载、链接、初始化2. 为对象分配内存3. 处理并发问题4. 初始化分配到的内存5. 设置对象的对象头6. 执行init方法进行初始化 8.2. 对象内存布局8.2.1. 对象头&#xff08;Header&am…

python+vue新能源汽车在线租赁管理系统pycharm项目

开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 在当今高度发达的信息中&#xff0c;信息管理改革已成为一种更加广泛和全面的趋势。 “新…

SpringBoot——原理(自动配置+原理分析@Conditional)

在上一篇有说到&#xff0c;进行源码跟踪时可以看见一个以Conditional开头的注解&#xff0c;这些都是条件装配的注解。 加在方法上时只对该方法生效&#xff0c;加在类上时是对整个配置类都有效。 这里只说三个常用的Conditional的子注解 案例演示 在启动类上加上一个Enabl…

第二章:ShardingSphere简介

什么是ShardingSphere 何为ShardingSphere呢?其实我们总结如下三点就能很好的理解: 1、一整套开源的分布式数据库中间件解决方案 2、有三个产品组成:Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar(规划中) 3、他的定位是关系型数据库的中间件,在分布式环境下合理的…

【20】SCI易中期刊推荐——计算机信息系统工程电子与电气(中科院3区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

(转载)matlab遗传算法工具箱

以下内容大部分来源于《MATLAB智能算法30个案例分析》&#xff0c;仅为学习交流所用。 1理论基础 1.1遗传算法概述 遗传算法(genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代…

Qiskit系列(1)---Qiskit安装

1.qiskit与anaconda简介 Qiskit并不是一门独立的语言&#xff0c;它是基于Python的一个框架&#xff0c;就好比Pytorch, Tensorflow。而Qiskit这个框架需要配套一些其他的package&#xff08;各种大小DLC&#xff09;一起运行&#xff0c;这些运行Qiskit所必须的package就构成了…

vue前端分页功能怎么实现

Vue前端分页功能可以通过以下几个步骤实现&#xff1a; 1. 安装分页组件库&#xff08;如vue-pagination-2&#xff09;&#xff1a; bash npm install vue-pagination-2 2. 在Vue项目中引入并注册分页组件&#xff1a; javascript import Vue from vue; import Pagination fr…

【商品详情 +关键词搜索】API 接口系列

首先&#xff0c;大家要到官方主页去申请一个 appkey&#xff0c;这个是做什么用的呢&#xff1f;App Key 是应用的唯一标识&#xff0c;TOP 通过 App Key 来鉴别应用的身份。AppSecret 是 TOP 给应用分配的密钥&#xff0c;开发者需要妥善保存这个密钥&#xff0c;这个密钥用来…

增强语言模型导读

以ChatGPT为主的大语言模型出现已有半年时间&#xff0c;研究逐渐从针对模型本身的进化和功能&#xff0c;延展到如何更为有效地利用大模型&#xff0c;将它与其它工具结合&#xff0c;落地&#xff0c;以解决实际领域中的问题。 这里的增强主要指让大语言模型&#xff08;LM&…

【21】SCI易中期刊推荐——计算机科学人工智能领域(中科院4区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

Unity 动画系统基本概念

一、动画的基本概念 1、帧 在古代&#xff0c;一幅字画叫一帧&#xff0c;而在计算机中&#xff0c;每次渲染完毕一幅画面并显示出来&#xff0c;这一幅画就是一帧。 连续切换的帧就形成了动态的画面。每秒刷新帧的次数称为频率&#xff0c;单位是FPS&#xff08;Frames Per…

JavaEE Tomcat Servelet第一个helloworld程序

Tomcat & Servelet第一个程序helloworld&#xff01; 文章目录 JavaEE & Tomcat & 第一个Servelet程序1. HTTP服务器 - Tomcat1.1 Tomcat的目录结构&#xff1a;1.2 启动Tomcat1.3 Tomcat的优点 2. Servelet框架2.1 创建Maven项目2.2 引入依赖2.3 创建目录2.4 写代…