构造HTTP请求

news2025/1/15 6:59:07

构造HTTP请求

  • 一、浏览器自己构造
  • 二、通过 form 表单构造
  • 三、通过 ajax 构造

一、浏览器自己构造

1)地址栏里写URL,构造出GET请求
2)点击a标签等,也会构造GET请求
3)img、link、script也会构造GET请求

二、通过 form 表单构造

form (表单) 是 HTML 中的一个常用标签。可以用于给服务器发送 GET 或者 POST 请求。

form 的重要参数:

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

input 的重要参数:

  • type:表示输入框的类型:text 表示文本;password 表示密码;submit 表示提交按钮
  • name:表示构造出的 HTTP 请求的 query string 的 key;query string 的 value 就是输入框的用户输入的内容
  • value:input 标签的值。对于 type 为 submit 类型来说,value 就对应了按钮上显示的文本

在VSCode中编写form.html:

<!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>
<body>
    <form action="https://www.sogou.com" method="get">
        <input type="text" name="aa">
        <input type="text" name="bb">
        <input type="submit" value="提交">
    </form>
</body>
</html>

打开form.html文件,在输入框随便填写数据:
在这里插入图片描述
点击 “提交”,此时就会构造出 HTTP 请求并发送出去~~

此时打开的页面:
在这里插入图片描述
就把键值对构造到 查询字符串(query string)中了!!!

在这里插入图片描述

form最关键的作用,就是给服务器传键值对!

三、通过 ajax 构造

从前端角度,除了浏览器地址栏能构造 GET 请求,form 表单能构造 GET 和 POST 之外,还可以通过 ajax 的方式来构造 HTTP 请求,并且功能更强大!

ajax 全称 Asynchronous Javascript And XML,是 2005 年提出的一种 JavaScript 给服务器发送 HTTP 请求的方式。
特点是可以不需要 刷新页面 / 页面跳转 就能进行数据传输。
页面跳转不是一个好事:开销大、时间慢、用户就得等,使用ajax不去触发跳转就可以达到 “局部刷新” 这样的效果 ~~

Asynchronous (异步):
是不是觉得很眼熟?之前学习多线程时有一个重要的锁:synchronized,同时也是 “同步” 的意思。
"同步"有两层含义,彼此之间没有联系:

  1. 指 “互斥”:多线程锁 synchronized;
  2. 谁发起的请求,谁负责接收结果:在网络通信 / IO操作的时候涉及到。

异步,是与第2个同步相对的,表示的是:发起请求的主体,不负责接受结果,而是由别人主动推送过来。
(举个快餐店的例子:同步相当于我点的单,我自己把饭端走;异步相当于我点的单,服务员把饭端上来了)

在 JavaScript 中可以通过 ajax 的方式构造 HTTP 请求:

ajax API 是属于浏览器原生自带的,但原生的API不太好用。因此,就可以使用第三方库封装好的API来代替原生的API。这里我们使用 jquery (js圈子里最知名的第三方库之一) ~~

可以直接通过网络地址把 jquery 引入到代码中:http://libs.baidu.com/jquery/2.0.0/jquery.min.js

代码示例:

<!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>Document</title>
</head>
<body>
    <script src="https://code.jquery.com/jquery-3.6.1.min.js"></script>
    <script>
        $.ajax({
            type: 'get',
            url: 'https://www.sogou.com',
            // data: 'http 请求的 body',       // post请求加上
            // contentType: 'x-www-form-urlencoded',   // post请求加上
            success: function(body) {
                // 服务器返回一个正确的响应 (200)
                // 就会由浏览器调用这个 success 对应的函数,来处理响应
                // 参数 body 就是响应的正文
                console.log("ok");
            },
            error: function() { 
                // 服务器返回一个错误的响应
                // 就会由浏览器调用这个 error 对应的函数
                console.log("error");
            }
        });
    </script>
</body>
</html>

这里先由服务器返回 正确 / 错误,然后才由浏览器调用相对应的函数 (回调函数),就做到了 “异步”。

$ 是 jquery 中特殊的变量名,是 jquery 里的全局对象。通过这个对象,就可以调用里面的一些方法,这些方法就是 jquery 的 API。虽然 ajax 方法的参数只有一个,但是里面是个对象 ~~

直接将代码在浏览器中运行,会报错:
在这里插入图片描述

跨域:一个页面在域名A之下,尝试通过ajax访问域名B里的资源。
这种情况,浏览器默认是禁止的。除非B网站返回的响应明确告诉浏览器说允许跨域访问。
市面上看到的大部分网站 / 服务器基本都是不允许跨域的 ~~

在这里插入图片描述

针对跨域,最好的办法就是 自己写一个服务器,页面放到自己的服务器上,访问咱们自己服务器的资源。(后面讲解servlet~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中的常用队列

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;Java中的常用队列 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: 林在闪闪…

【Django】第二课 基于Django图书借阅管理网站平台

概念 本文在上一篇文章之上完成登录&#xff0c;图书显示&#xff0c;关键字搜索以及分页功能 登录功能实现 当用户在首页进行输入学生用户信息后&#xff0c;点击登录按钮发送请求给服务器&#xff0c;地址请求为: /toLogin/ urls.py path(toLogin/,views.toLogin), 将接…

ArcGIS基础实验操作100例--实验3旋转矢量要素

实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验3 旋转矢量要素 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&#xff09;加载【旋转】工具 &#xff08;2&#xff09;旋转矢量要素 一…

灵龟八法推算

很久之前就对这个算法感兴趣了&#xff0c;但是一直没搞定&#xff0c;网上公说公的&#xff0c;婆说婆的&#xff0c;搞得你头晕眼睛花&#xff0c;最后东拼西凑研究了好久才研究出来,在这里给大家分享。 第一步&#xff0c;掏出你的老黄历&#xff0c;如果你没有老黄历问题不…

BUUCTF Misc 弱口令 [RoarCTF2019]黄金6年 小易的U盘 [WUSTCTF2020]alison_likes

目录 弱口令 [RoarCTF2019]黄金6年 小易的U盘 [WUSTCTF2020]alison_likes 弱口令 下载文件 一个压缩包&#xff0c;需要密码&#xff0c;爆破了一会没出结果&#xff0c;百度了一下竟然有提示 蓝色内容复制到sublime查看&#xff08;记事本也不能看&#xff09; 摩斯密码&…

vue-cli2配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)

vue-cli区分办法 vue配置生产环境.env.production、测试环境.env.development vue配置webpack生产环境、测试环境 在使用webpack创建完vue2项目的时候&#xff0c;为了解决生产打包、测试打包对应的全局变量不一致的问题。 首先看一下package.json的改动&#xff1a; "…

【Git】一文带你入门Git分布式版本控制系统(创建版本库、 版本回退)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

改变您对Fedora的印象

导读我是 Fedora 的老用户了&#xff0c;从四年前接触嵌入式 Linux 开始&#xff0c;Fedora 就是我的桌面操作系统&#xff0c;期间从未被其他操作系统替代过&#xff0c;偶尔尝试也会第二天就装回来。用得愈久愈是喜欢&#xff0c;简洁、漂亮、稳定&#xff0c;无一不击中我&a…

OpenGL学习(基础光照)

这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个分量组成&#xff1a;环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照 环境光照 全局照明(Global Illumination)算法&#xff0c;但是…

吴恩达《机器学习》——线性回归代码实现

线性回归1. 单变量线性回归单变量线性回归公式损失函数优化算法——批梯度下降&#xff08;BGD&#xff09;2. 多变量线性回归特征缩放&#xff08;标准化&#xff09;参数的逆缩放3. 线性回归算法代码实现向量实现Python代码4. 实验结果单变量回归多变量回归实验总结数据集、源…

使用C#开发Word VSTO外接程序示例

目标&#xff1a;实现类似word中导航栏视图的功能。 创建新项目&#xff0c;选择模板“Word VSTO 外接程序”。选择工程&#xff0c;新建项目---新建功能区&#xff08;可视化设计器&#xff09;双击打开新建的可视化编辑器&#xff0c;编辑容器RibbonGroup在容器RibbonGroup里…

ReactJS入门之Model层

目录 一&#xff1a;分层 二&#xff1a;使用DVA进行数据分层管理 三&#xff1a;在model中请求数据 四&#xff1a;mock数据 一&#xff1a;分层 上图中&#xff0c;左侧是服务端代码的层次结构&#xff0c;由Controller、Service、Data Access 三层组成服务端系统&#…

Docker图文 | Docker、Dockerfile、Docker-compose、Docker镜像仓库操作 | 系统性学习 | 无知的我费曼笔记

Dokcer和Linux一样都是一些死命令&#xff0c;不必花费过多的时间去学习。 也不必花费过多时间专项地记忆&#xff0c;在实际运用中随用随取即可。 还不如将省下来的时间更多地花费在于培养思维上。 文章目录Docker1.初识Docker1.1.Docker意义1.1.1.应用部署的环境问题描述1.1…

Antd UI Switch组件 中 checked与defaultChecked踩坑记录

目录 需求分析 问题发现 解决方法 总结 需求分析 需求其实很简单&#xff0c;就是在对应的表格行内添加一个人switch 滑块&#xff0c;用于开启或关闭单点登录入口。只需要修改一下对应的表格&#xff0c;添加一个滑块组件&#xff0c;新增一个接口。于是菜鸡博主&#xf…

MySQL库的基本操作与数据库的备份

目录 1、什么是数据库 2、数据库的基本使用 <1>本地连接服务器 <2>创建数据库 <3>创建数据库实例 <4>字符集和校验规则 3、操纵数据库 <1> 查看数据库 <2> 显示创建语句 <3> 修改数据库 <4> 数据库删除 <5>…

遇到的问题

一、git 1. git push之前忘记git pull:需要指定如何协调不同的分支。 解决&#xff1a; (1) git config pull.rebase false (2) git status 用于查看在你上次提交之后是否有对文件进行再次修改 (3) git stash 将当前的工作状态保存到git栈 2. 删除本地分支 # 删除本地分支 git…

【C++初阶】C++的IO流

文章目录C语言的输入输出流CIO流C标准IO流C文件IO流stringstream的简单介绍所有的测试代码C语言的输入输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中。printf(): 将指定的文字/字…

Python最适合做什么?

Python最适合做什么&#xff1f; 最近我在Reddit上讨论了为什么有人会使用Python而不是其他编程语言。这个讨论非常好&#xff0c;因此我想写一篇关于它的文章。 首先&#xff0c;让我告诉你我对Python的看法。Python是我喜欢的一种语言&#xff0c;可以用于各种各样的应用&a…

spark读取elasticSerach

搭建参考:我的这篇 elasticsearch搭建_我要用代码向我喜欢的女孩表白的博客-CSDN博客 为了方便测试&#xff0c;我们先建立个索引&#xff0c;如果没有索引&#xff0c;他也能插入&#xff0c;只是走的是默认插入格式。 不过虽然接触es已经4年了&#xff0c;但是在工作中&…

XSS攻击原理及预防方法

XSS攻击通常都是通过跨站指令代码攻击网站的后台漏洞。它和信息隐性代码攻击攻击的目标不同。前者是透过从Web前端输入信息至网站&#xff0c;导致网站输出了被恶意控制的网页内容&#xff0c;使得系统安全遭到破坏。而后者则是输入了足以改变系统所执行之SQL语句内容的字串&am…