【HTTP 协议2】如何构造 HTTP 请求


前言

各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:
📕 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>
  • 运行这段代码 :

在这里插入图片描述

  • 分别填写 111999, 点击提交, 会发现 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>
  • 展示效果不变, 还是依次输入 111999 点击提交 :
    在这里插入图片描述

  • 依然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 协议的请求

如果本篇对你有帮助,请点赞收藏支持一下,小手一抖就是对作者莫大的鼓励啦😋😋😋~


上山总比下山辛苦
下篇文章见

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵魂相契的树

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值