认识http协议---3

本文涉及的产品
.cn 域名,1个 12个月
简介: 认识http协议---3

🍇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)

288ee5b50c224eca9ec29eb9209f3f8e.png

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>


4b6834f5f5924bf8b3283d6ad45c0e29.png

b51c3c57bce54cb4b68ad2623f8b25d5.png

f33d487733ba49b1915b60fb3dc9d025.png

385cb0c46dc941759cfc8ff3a127178e.png

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


我们同样搞清楚个请求和form表单代码还有浏览器页面的关系

画图

28a036598fc848d78ccaba26dd7b17e1.png

其实和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>

$


是jquery里面特殊的全局变量,jquery所有的api都是

$的方法



5b14c8a1840b4ee5aae7b415ee1031bc.png

这是回调函数,在服务器返回一个正确的响应的时候,浏览器自动执行

在代码的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

我们可以抓包看到


f5483949ef55436e84fa151a6223f1d1.png


两个域名不一致,就会导致跨域问题

这个问题不是bug,是浏览器为了限制安全问题,引入的保护机制

防止甲网站访问乙网站的数据


(不过form 允许跨域)


form 和ajax有啥区别?

form没有跨域问题,ajax有跨域问题

form只支持get,post方法,ajax支持各种方法,更加灵活


🧁3.再谈同步和异步


异步:Asynchronous

同步:synchronized

计算机中,一个术语可能有多种含义


在加锁中:

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

异步:其他线程在等待的这个过程中,可以去做其他事情,不是一直阻塞在这里


==================================================在IO中:

同步:请求的发起者自行获取响应(主获取结果)

异步:请求者发起响应,不关心结果,被请求的一方计算出结果,推送给发起者(被动获取结果)


举例


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

第二个做法就是被动获取,就是异步


🧁4.使用post构造http请求


我们已经学习了四种构造http请求的方法,那么可以采用不写代码也能构造的办法,那就是使用postman

用法非常简单,只要熟悉http报文格式

就是这个软件

写几个请求


404d10b80b0a4b1ea4af03cbb8492b61.png

d03c78b4de9840ce82be5987c2ccb6ec.png

今天的讲解就到这里,我们下期再见,886~~~

相关文章
|
7天前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
1月前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
80 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
|
5天前
|
安全 网络协议 网络安全
在实现HTTPS时,有哪些常见的安全协议
在实现HTTPS时,有哪些常见的安全协议
|
5天前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
13 0
深入解析 http 协议
|
12天前
|
数据采集 JSON API
🎓Python网络请求新手指南:requests库带你轻松玩转HTTP协议
本文介绍Python网络编程中不可或缺的HTTP协议基础,并以requests库为例,详细讲解如何执行GET与POST请求、处理响应及自定义请求头等操作。通过简洁易懂的代码示例,帮助初学者快速掌握网络爬虫与API开发所需的关键技能。无论是安装配置还是会话管理,requests库均提供了强大而直观的接口,助力读者轻松应对各类网络编程任务。
53 3
|
13天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
28 2
|
15天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
47 3
|
20天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
47 8
|
20天前
|
缓存 网络协议 UED
HTTP协议介绍
HTTP协议的
27 5
|
20天前
|
监控 安全 应用服务中间件
如何配置HTTPS协议?
如何配置HTTPS协议?
32 4
下一篇
无影云桌面