标签。
<form action="/search" method="get">
<input type="text" name="query">
<input type="submit" value="Search">
form>
在这个例子中,当用户填写搜索框并点击"Search"按钮时,浏览器会向"/search"路径发送一个GET请求,请求中包含用户在搜索框中输入的内容。
- 标签:你可以使用标签的href属性来定义当用户点击链接时要导航到的URL。如果你在href属性中使用?字符,那么它会触发一个GET请求。例如:
<a href="?page=1">Go to page 1a>
在这个例子中,当用户点击这个链接时,浏览器会向当前URL的路径发送一个带有"page=1"查询参数的GET请求。如果当前URL是"[http://example.com/some/path?another=value",那么点击这个链接后,浏览器会向"http://example.com/some/path?page=1&another=value"发送GET请求。
3. form 表单构造 HTTP 请求
HTML的元素可以用于创建一个表单,用户可以在该表单中输入数据。当用户提交表单时,浏览器将构造一个HTTP请求,并将表单数据作为请求体发送到服务器。
构造HTTP请求的过程如下:
- 浏览器获取表单数据:当用户在表单中输入数据后,浏览器会将这些数据存储起来,并等待用户提交表单。
- 用户提交表单:当用户点击“提交”按钮或按下回车键时,浏览器会触发表单的提交事件。
- 浏览器构造HTTP请求:浏览器根据表单元素的类型和属性,构造一个HTTP请求。对于GET请求,浏览器会将表单数据编码成URL参数,并附加到URL中。对于POST请求,浏览器会将表单数据作为请求体发送。
- 浏览器向服务器发送请求:浏览器将构造好的HTTP请求发送到服务器,并等待服务器的响应。
- 服务器处理请求:服务器收到请求后,会解析请求体中的数据,并根据需要对数据进行处理。服务器可能会返回一个HTML页面作为响应,或者将数据存储在数据库中。
- 浏览器接收响应:浏览器收到服务器的响应后,会解析响应内容并将其显示给用户。如果响应是一个HTML页面,浏览器会将其渲染成可视化页面。如果响应是其他类型的数据(如JSON),浏览器会根据需要进行处理和显示。
我们这里先创建出一个.html
文件,然后用 VScode 打开这个文件。
![【计算机网络】如何让客户端构造一个HTTP请求_第2张图片](http://img.e-com-net.com/image/info8/c17669c77b0140588d73e0b94e0463e6.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第3张图片](http://img.e-com-net.com/image/info8/c120d1a374bc4b82b88574e351565b1c.jpg)
HTML 标签往往是成对存在的。
![【计算机网络】如何让客户端构造一个HTTP请求_第4张图片](http://img.e-com-net.com/image/info8/99dfa35d3b1f47679601b9930b0d9c0e.jpg)
<html>
<head>
head>
<body>
hello world
body>
html>
这个 body 中的内容就是页面中显示的内容。
![【计算机网络】如何让客户端构造一个HTTP请求_第5张图片](http://img.e-com-net.com/image/info8/b04395216364481ca447b2ee4c44a42d.jpg)
那么我们就简单的使用 form 表单构造一个 HTTP 请求。
在 VScode 中,我们可以手动打出标签,但是也可以使用 ! + Tab 生成一个 HTML 模板。
![【计算机网络】如何让客户端构造一个HTTP请求_第6张图片](http://img.e-com-net.com/image/info8/21b88dc547ed49c5af89df83ebb81535.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第7张图片](http://img.e-com-net.com/image/info8/f99626f1fd1a4dfabe8d82f3b9577b53.jpg)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/5417f4ce70c5483ca8cec0543faf6a1a.jpg)
然后我们需要生成一个 form 标签,指定 URL 和 method
![在这里插入图片描述](http://img.e-com-net.com/image/info8/df72fd04db064e7b917adced0690a9e5.jpg)
然后就是处理表单的具体内容。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>formtitle>
head>
<body>
<form action="http://www.baidu.com/index.html" method="get">
<input type="text" name="userid" placeholder="请输入用户名">
<input type="text" name="password" placeholder="请输入密码">
<input type="submit" value="提交">
body>
form>
html>
![【计算机网络】如何让客户端构造一个HTTP请求_第8张图片](http://img.e-com-net.com/image/info8/9af676ae56b849e4a64ab888f9fcbd55.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第9张图片](http://img.e-com-net.com/image/info8/5e577d649231460bae1b6eb1da722edd.jpg)
当写完这个 HTML 代码之后,保存,然后打开这个文件就会出现这样的页面。
![【计算机网络】如何让客户端构造一个HTTP请求_第10张图片](http://img.e-com-net.com/image/info8/eafb12fe393248c68f031c892f2c3596.jpg)
输入用户名和密码,提交。
![【计算机网络】如何让客户端构造一个HTTP请求_第11张图片](http://img.e-com-net.com/image/info8/3ee5c2612d7a49f3aefe9daead3dd10b.jpg)
当点击这个提交按钮的时候,会显示出这样的页面。
![【计算机网络】如何让客户端构造一个HTTP请求_第12张图片](http://img.e-com-net.com/image/info8/6a93a2b1209940c68e94e9f3d8d4c5b3.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第13张图片](http://img.e-com-net.com/image/info8/bd56c04f51354239baa7ef42bf53f14e.jpg)
我们构造的 input 标签中的 name 会作为 key 值,而对应输入的则会作为 value 值构成键值对放在 URL 的 query string 中。
虽然通过 form 表单可以构造一个 HTTP 请求,但是 form 表单只能构造出 GET 和 POST 方法的 HTTP 请求,并且使用 form 表单构造出来的 HTTP 请求会触发页面跳转,会更新整个页面的数据,而有些时候则是只需要更新做出修改了的部分,那么这时候 form 表单构造的 HTTP 请求就显得很呆了,所以就又出现了另一种构造 HTTP 请求的方式——ajax。
4. ajax 构造 HTTP 请求
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它使用 JavaScript 和 XMLHttpRequest 对象来与服务器进行异步通信,从而在不重新加载整个页面的情况下,更新网页的部分内容。
具体来说,Ajax 允许在用户与网页交互时,通过后台与服务器进行通信,获取或提交数据,然后在网页上对获取到的数据进行处理和展示。这种技术使得网页能够在用户操作时,实时地更新部分内容,提供更加流畅的用户体验。
Ajax 的核心是 JavaScript 中的 XMLHttpRequest 对象,它能够通过 HTTP 或 HTTPS 协议,与服务器进行通信。当用户在网页上进行操作时,JavaScript 代码会通过 XMLHttpRequest 对象向服务器发送请求,然后等待服务器的响应。
在服务器端,收到请求后,可以进行相应的处理,比如查询数据库、处理数据等,然后将处理结果返回给客户端。客户端收到响应后,可以使用 JavaScript 对响应数据进行处理和展示,比如更新网页上的某个部分。
通过 Ajax 技术,可以实现以下功能:
- 在网页上实时地更新部分内容,提高用户体验。
- 实现动态的网页效果,提高网页的交互性。
- 在后台与服务器进行通信,减轻用户的网络负担,提高网页的加载速度。
- 实现网页的异步更新,提高网页的响应速度。
虽然浏览器提供了原生的 ajax API,但是这个原生的比较难用,所以我们可以使用一些封装了 ajax 的第三方库来实现这个功能。我们今天使用的第三方库就是 jquery 库。既然要使用第三方库是需要额外下载引入的。虽然下载比较麻烦,但是前端只是需要将这个库的地址写入代码中就可以了。
我们可以搜索 jquery cdn,然后找到https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js
这个地址,将这个地址引入就行了。
![【计算机网络】如何让客户端构造一个HTTP请求_第14张图片](http://img.e-com-net.com/image/info8/d347e0bd8c704f319cbc0c7ca334153a.jpg)
当引入 jquery 第三方库之后,我们就可以写相关的 ajax 代码了。
![【计算机网络】如何让客户端构造一个HTTP请求_第15张图片](http://img.e-com-net.com/image/info8/ea02408bd1ea4ac198995643980b07c1.jpg)
这里 $ 是 jquery 中定义的一个全局变量,通过 $ 可以调用 jquery 中的方法,而在 JavaScript 中 {} 表示对象,在 ajax 中 {} 中是使用键值对的方式来描述属性名和属性值的。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
head>
<body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js">script>
<script>
$.ajax({
type: "get",
url: "http://www.baidu.com/index.hetml",
success: function(body){
console.log(body);
},
error: function(body){
console.log("获取响应失败");
},
});
script>
body>
html>
![【计算机网络】如何让客户端构造一个HTTP请求_第16张图片](http://img.e-com-net.com/image/info8/b9d6c468f8854eb4b19f0c8fbec4658d.jpg)
这里 success: function(){} 中的代码不是立即执行的,而是当服务器返回响应之后,然后会将响应部分的 body 传入到 function 中,这里 function 就类似一个匿名内部类。如果服务器返回的是一个类似的 200 成功的响应,那么机会执行 success 部分的代码,如果返回的是 404 等其他错误,就会执行 error 中的代码。console.log()的作用就是打印的作用。
保存代码之后打开这个文件,并且打开浏览器的检查选项可以看到结果,执行的error中的代码。
![【计算机网络】如何让客户端构造一个HTTP请求_第17张图片](http://img.e-com-net.com/image/info8/c1dfefc16b1d442480aa375183fd9ec8.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第18张图片](http://img.e-com-net.com/image/info8/ed87ecdb5a8c40b8b7cd6addf65a78f1.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第19张图片](http://img.e-com-net.com/image/info8/7ad18598d0fa4b7d8ae3913635524596.jpg)
虽然 form 表单和 Ajax 都可以构造 HTTP 请求,但是这都需要我们用到前端的知识,如果你有一定的前端基础,那其实还好,但是如果没有一定的前端基础的话,那么使用上面两个方法构造 HTTP 请求的成本就比较高,所以我们既可以使用工具来替我们构造一个 HTTP 请求,这个工具就是——postman。
5. postman 构造 HTTP 请求
5.1 进入 postman 网站下载 postman
https://www.postman.com/downloads/
![【计算机网络】如何让客户端构造一个HTTP请求_第20张图片](http://img.e-com-net.com/image/info8/e7b5a378c19d44b8bec90fd8fc31a1a9.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第21张图片](http://img.e-com-net.com/image/info8/a2a09c577db94a7abf2b2988201d1380.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第22张图片](http://img.e-com-net.com/image/info8/e385b35257204270b64b451e2926a2ca.jpg)
注册完成之后就会下载安装包,然后打开软件的时候会出现真人验证。
5.2 打开 postman
![【计算机网络】如何让客户端构造一个HTTP请求_第23张图片](http://img.e-com-net.com/image/info8/b2f4af60ae214df0aabfc45f3c4d0da9.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第24张图片](http://img.e-com-net.com/image/info8/097e7bbaa6544365a3191ead0573e3c4.jpg)
进入 postman 的界面就是这样的。
![【计算机网络】如何让客户端构造一个HTTP请求_第25张图片](http://img.e-com-net.com/image/info8/f610fd5f1be048f39b64a52b83bcd3fd.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第26张图片](http://img.e-com-net.com/image/info8/e04454e452e24bbe8144592daf6e8359.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第27张图片](http://img.e-com-net.com/image/info8/24fa3637d4034696ab303eb277b703dd.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第28张图片](http://img.e-com-net.com/image/info8/a0d4b441734443318d6909d7ab057781.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第29张图片](http://img.e-com-net.com/image/info8/ab29f99cc1b84c0bb2b0123ae2c2e019.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第30张图片](http://img.e-com-net.com/image/info8/93bc6863777c4ffa8126cc47471c1da4.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第31张图片](http://img.e-com-net.com/image/info8/aa9b180ec4bf417f9ed20c497297e156.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第32张图片](http://img.e-com-net.com/image/info8/5376384ba92b422db4c162904351ef45.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第33张图片](http://img.e-com-net.com/image/info8/3bba3ea5abaa4c4daf781b94585feeb7.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第34张图片](http://img.e-com-net.com/image/info8/25f1791db72a40d9af7b0c95f7727590.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第35张图片](http://img.e-com-net.com/image/info8/d652c9ec46ec4752ba3d5d05269520ee.jpg)
![【计算机网络】如何让客户端构造一个HTTP请求_第36张图片](http://img.e-com-net.com/image/info8/c53dff0b15d04dcfbc6199f06f04c85b.jpg)
当我们构造完 HTTP 请求之后,点击 send ,就会收到服务器的响应,以及相应的状态。
![【计算机网络】如何让客户端构造一个HTTP请求_第37张图片](http://img.e-com-net.com/image/info8/9cb92a84435f40f48e525eb286e46a6d.jpg)
通过点击这个还可以生成不同语言生成 HTTP 请求的代码,这个代码是可以直接复制粘贴的。
![【计算机网络】如何让客户端构造一个HTTP请求_第38张图片](http://img.e-com-net.com/image/info8/b2320475d8d043389cff9c09851fdf75.jpg)