文章目录
- 前言
- 一、地址栏输入
- 二、HTML 特殊标签
- 三、form 表单
- 四、ajax
- 总结
前言
各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:
📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等
📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等
📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议, Tomcat, Servlet, Linux, JVM等(正在持续更新)
上篇文章介绍了HTTP协议的报文格式, 分析了请求报文和响应报中需要掌握的属性或字段, 本篇主要介绍如何构造一个HTTP请求
提示:是正在努力进步的小菜鸟一只,如有大佬发现文章欠佳之处欢迎批评指点~ 废话不多说,直接上干货!
一、地址栏输入
在地址栏输入一个 URL, 访问页面就会发送 GET 请求
比如在地址栏输入百度的域名 :
抓到的包显示, 发送了一个 GET 请求, 响应就是百度的 HTML 页面
二、HTML 特殊标签
HTML 中的 link
, img
, script
, a
标签都会触发 GET 请求(前提是访问网络资源而不是本地资源)
在浏览器打开 HTML 文件后, 加载完所有的标签, 会根据以上这些标签给服务器发送 GET 请求以获取网络资源
三、form 表单
form (表单) 是 HTML 中的一个常用标签. 可以用于给服务器发送 GET 或者 POST 请求
form 表单只能发送 GET 或 POST 方法的请求, 其他的方法不可以
- 编写一个简单的 form 表单来构造 GET 请求 :
<!-- action里是要访问的url, method指定请求的方法 -->
<form action="https://www.baidu.com/abc" method="get">
<input type="text" name = "a">
<input type="text" name = "b">
<input type="submit" value="提交">
</form>
- 运行这段代码 :
- 分别填写
111
和999
, 点击提交, 会发现 404 了, 因为我们的 URL 是随便写的, 根本不存在, 但不影响我们发送请求
- 通过抓包工具可以看到我们发送成功了 GET 请求
- 观察 form 代码和这个 GET 请求之间的关系 :
- 刚刚的 form 代码中把 method=“get” 改成 method=“post”, 来构造一个 POST 请求
<!-- action里是要访问的url, method指定请求的方法 -->
<form action="https://www.baidu.com/abc" method="post">
<input type="text" name = "a">
<input type="text" name = "b">
<input type="submit" value="提交">
</form>
-
展示效果不变, 还是依次输入
111
和999
点击提交 :
-
依然404, 因为 URL 是瞎写的, 但不影响抓包, 可以看到构造成功了一个 POST 请求
- 观察 form 代码和 POST 请求的关系 :
综上:
1, form 表单构造请求, 根据代码中 name 的值会形成健, 用户输入的会形成值, 这二者结合成键值对
2, 如果是 GET 请求, form 构造的数据以 query string 的形式被携带在 URL 中, 如果是 POST 请求, 数据在请求报文的 Body 中
版本号默认为HTTP/1.1
四、ajax
目前 ajax 是最主流的前后端交互方式之一
ajax 全称 Asynchronous Javascript And XML, 是 2005 年提出的一种 JavaScript 给服务器发送HTTP 请求的方式
Asynchronous, 意思是异步, 反义词是同步
在多线程场景下, 同步是指多个线程可以同时访问同一个资源, 加了(互斥)锁之后就必须阻塞等待
在当前 IO 场景下, 同步是指请求的发起者, 自行获取响应, 异步是指, 请求的发起者不关心相应的结果, 由响应者把响应结果推送请求者
ajax 就是前后端异步交互的方式, 由于JavaScript 提供的原生 API 比较难用, 我们使用 jQuery 提供的 ajax API 来构造请求 :
可惜的是, 这个代码会报错
因为 ajax 的保护机制, 不允许跨域访问, 此处运行 ajax 的服务器和要访问的服务器域名不一致, 关于跨域问题暂时不多做讨论, 将来自己做网站, 自己的页面访问自己的服务器, 自然就没有跨域问题了
另外, 不只是 JS 可以, Java, C++, Pyhon等能够操作网络的语言, 都可以构造 HTTP 请求
总结
以上就是本篇的全部内容, 主要介绍了如何 构造HTTP 协议的请求
如果本篇对你有帮助,请点赞收藏支持一下,小手一抖就是对作者莫大的鼓励啦😋😋😋~
上山总比下山辛苦
下篇文章见