【HTTP协议】—— 四种构造HTTP请求的方法(附代码)


前言

本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下,以后互相学习,共同进步。这篇文章能够帮助到你的话,劳请大家点赞转发支持一下!


一、地址栏输入URL

直接 在浏览器地址栏中输入一个URL ,就会构造出一个HTTP请求,这个HTTP请求只能是 GET请求

示例在这里插入图片描述

回车,跳转到 “搜狗搜索” 网页。

在这里插入图片描述

使用Fiddler抓到HTTP请求。
在这里插入图片描述


二、HTML特殊标签

html中的一些特殊标签 ,可以构造出HTTP请求,但是这个HTTP请求只能是 GET请求

可触发GET的特殊标签
1️⃣link
2️⃣script
3️⃣img
4️⃣a

前提条件 :这些标签访问的是网络资源,才会触发GET请求,访问本地资源不触发

a标签举例
一切从简,不搞花里胡哨。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>a标签构造GET请求</title>
</head>
<body>
    <!-- 超链接,放的是我CSDN的个人主页 -->
    <a href="https://blog.csdn.net/The_emperoor_man?type=blog">CSDN主页</a>
</body>
</html>

在这里插入图片描述
点击超链接跳转到我的个人主页。 在这里插入图片描述
使用Fiddler抓到HTTP请求。 在这里插入图片描述


三、form表单

html中的form表单 ,可以构造出HTTP请求,而且这个HTTP请求只能是 GET请求或者POST请求

form的重要参数:

action:构造的 HTTP 请求的 URL。
method:构造的 HTTP 请求的 方法 是 GET 还是 POST (form 只支持 GET 和 POST)


input的重要参数:

type:表示输入框的类型,text 表示文本,password 表示密码,submit 表示提交按钮。
name:name表示HTTP请求中的键值对中的key键值对中的value就是输入框用户输入的内容键值对在GET请求中放在了URL中的query string(查询字符串)在POST请求中放到了body中
value: input 标签的值,对于 type 为 submit 类型来说,value 就对应了按钮上显示的文本。

GET请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>form标签构造GET请求</title>
</head>
<body>
    <!-- action表示要访问的URL,method表示请求方法 -->
    <form action="https://www.sogou.com/abc/def" method="GET">
        <input type="text" name="qwe">
        <input type="text" name="rty">
        <input type="submit" value="提交">
    </form>
</body>
</html>

在这里插入图片描述

服务器上不存在咱们随便输入的资源,所以会返回404状态码。 但是这个HTTP请求也发送出去了。 在这里插入图片描述
使用Fiddler抓到GET请求。 在这里插入图片描述
此时form标签内的两个input表中的 “name” 与咱们 “输入的数据” ,分别组成了 键值对" 对应URL中的查询字符串
在这里插入图片描述


POST请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>form标签构造POST请求</title>
</head>
<body>
    <!-- action表示要访问的URL,method表示请求方法 -->
    <form action="https://www.sogou.com/abc/def" method="POST">
        <input type="text" name="qwe">
        <input type="text" name="rty">
        <input type="submit" value="提交">
    </form>
</body>
</html>

在这里插入图片描述
服务器上不存在咱们随便输入的资源,所以会返回404状态码。 但是这个HTTP请求也发送出去了。 在这里插入图片描述
使用Fiddler抓到POST请求。 在这里插入图片描述
此时form标签内的两个input表中的 “name” 与咱们 “输入的数据” ,分别组成了 键值对" 对应body

在这里插入图片描述


四、ajax

ajax是目前前后端最主流的交互方式之一。

ajax 全称 Asynchronous Javascript And XML, 是 2005 年提出的一种 JavaScript 给服务器发送HTTP 请求的方式。特点是可以不需要 刷新页面/页面跳转,就能进行数据传输。

ajax是前端和后端,异步交互的一种方式。

Asynchronous是异步的意思,他的反义词是同步。
对于同步异步在不同的场景下,又有不同的理解。

多线程场景下
同步:多个线程可以同时访问同一个数据。
异步:这个数据加锁(synchronized)之后就由同步变异步了,此时多个线程禁止同时访问同一个数据。



IO场景下
同步:请求的发起者,不会再发出下一个请求,而是回一直等待这个响应,收到响应后,才会发出下一个请求。
异步:请求的发起者不关心响应,依旧该发下一个请求就发,被请求者计算出响应后,把响应发送给发起者后,发起者再回过头来处理响应。

jQuery提供的ajax API
JavaScript提供了原生的ajax的API,但是不好用。
这里我们使用jQuery提供的ajax API。

我们采用 $.ajax()

常用属性介绍
url:链接地址,字符串表示。
type:“POST” 或 “GET”,请求类型;可设置成HTTP请求的任意类型。
contentType:请求中body的数据格式
data:请求中body中的内容,要与dataType选择的格式相同。
dataType:响应中数据的格式,字符串表示。
success:请求成功后,服务器回调的函数。
async:是否异步处理,bool表示,默认为true;设置该值为false后,JS不会向下执行,而是原地等待服务器返回数据,并完成相应的回调函数后,再向下执行。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ajax</title>
    <script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
</head>
<body>
    <script>
        $.ajax ({
            // URL
            url:"https://www.sogou.com",
            // 请求类型
            type:"POST",
            // 回调函数,发起者,收到响应后,再回来执行的函数
            success:function(body) {
                // 写处理响应的代码
            }
        });
    </script>
</body>
</html>

虽然ajax很强,但是有一个非常重要的问题:跨域问题。

跨域
比如说我们的域名是abcd.com,我们在这个域名下运行html去访问sogou.com域名,就是跨域。

浏览器的保护机制:防止A网站请求B网站的数据,就禁止跨域,就算不同域名的服务器把响应返回给你了,浏览器也不去处理,还会给你报错。

在这里插入图片描述

别担心,等以后我们自己写了服务器,自己请求自己的服务器就不会出现跨域问题了。


总结

以上就是今天要讲的内容,本文分享了四种构造HTTP请求的方法。

路漫漫不止修身,也养性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值