【网络安全零基础入门】一文搞懂Javascript实现Post请求、Ajax请求、输出数据到页面、实现前进后退、文件上传
文章目录
- 一、Javascript原生post请求写法
- 二、原生JS封装Ajax请求
- 三、JS里的值或内容输出到HTML网页中
- 四、Javascript页面后退前进刷新示例
- 五、Javascript实现文件上传
- 👉1.成长路线图&学习规划👈
- 👉2.网安入门到进阶视频教程👈
- 👉3.SRC&黑客文档👈
- 👉4.护网行动资料👈
- 👉5.黑客必读书单👈
- 👉6.网络安全岗面试题合集👈
一、Javascript原生post请求写法
Javascript:
let xhr = new XMLHttpRequest(); // 创建XHR对象
xhr.onreadystatechange = function () { if (xhr.readyState == 4) { // 4表示此次请求结束 console.log("后端返回的结果:"+this.responseText); /** 你的逻辑代码 **/ let result = JSON.parse(this.responseText);// 后端返回的结果为字符串,这里将结果转换为json if(result.code == 1){ // 这里我通过code来标识结果 // 输出后端返回的用户名 console.log("用户名:"+result.data["username"]); // 输出后端返回的密码 console.log("用户名:"+result.data["password"]); } /** 你的逻辑代码End **/ }
};
xhr.open( // 打开链接 "post", "server.php", // 后端地址 true
);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // 设置请求头
xhr.send( // 设置需要携带到后端的字段,字符串形式 "username="+ "火柴炮炸牛屎" + "&password="+ "123456" // 注意:字段之间需要加上 “ & ” 字符
);
PHP示例:
// 接受原生JS Post过来的字段值
$user = isset($_POST['username'];
$password = isset($_POST['password']); // 创建一个数组存放字段值
$data = array();
$data["username"] = $username;
$data["password"] = $password; // 返回结果给JS
$result = array("code"=>1,"msg"=>"OK!","data"=>$data);
echo json_encode($result);
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具以及黑客技术电子书和视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
二、原生JS封装Ajax请求
Ajax的原理其实就是利用XMLHttpRequest发送的http请求,原生js利用XMLHttpRequest发送http请求大概步骤:
-
检测浏览器是否存在XMLHttpRequest或者ActiveXObject对象,老的IE版本是用ActiveXObject
-
创建XMLHttpRequest对象
-
注册一个接收的事件
-
调用open建立连接
-
调用send发送请求
var xmlhttp = null;
// 1、2、检测并创建XMLHttpRequest对象
if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest();} else if (window.ActiveXObject){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}if (xmlhttp != null) { // 3、注册接收事件 xmlhttp.onreadystatechange = function(){// 通过xmlhttp.status判断状态 if(xmlhttp.status = 200){ // 通过xmlhttp.responseText获取数据 }
} // 4、建立连接,open(method,url,async,user,password)有5个参数 /* * method:必选,请求方法 * url:必选,请求地址 * async:可选,布尔值,异步操作,默认true * user:可选,用户名,用于认证,默认null * password:可选,密码,用于认证,默认null */ xmlhttp.open("GET","http://localhost",true); // XMLHttpRequest.setRequestHeader(header,value) // 设置HTTP请求头部的方法,必须在open()方法和send()方法之间调用 // 5、发送请求,send(body)有1个参数 /* * body:可选,需要发送的数据体,即参数,默认null */ xmlhttp.send(); } else { alert("浏览器不支持XMLHTTP")}
了解XMLHttpRequest后,我们可以利用XMLHttpRequest封装一个简单的Ajax的方法
// 封装一个 ajax 函数
function myAjax(options) {options = options || {};options.url = options.url || "";options.method = (options.method || "GET").toUpperCase();options.dataType = options.dataType || "json";var xmlhttp = null;if (window.XMLHttpRequest) {xmlhttp = new XMLHttpRequest();} else if (window.ActiveXObject) {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} else {console.log("浏览器不支持XMLHTTP");return false}if (Object.is(options.method, 'GET')) {// get的参数特殊处理let params = "";if (typeof options.params === "object") {for (let key of Object.keys(options.params)) {params = params === "" ? params + "" + key + "=" + options.params[key] : params + "&" + key + "=" + options.params[key]}console.log(params);} else {params = options.params;}console.log(params);options.url = options.url + "?" + params;xmlhttp.open(options.method, options.url, true)xmlhttp.send()
} else if (Object.is(options.method, 'POST')) {xmlhttp.open(options.method, options.url, true)xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')xmlhttp.send(options.params)
}xmlhttp.onreadystatechange = function () {console.log(xmlhttp.responseText);if (Object.is(xmlhttp.status === 200)) { options.success(xmlhttp.responseText)}}
}myAjax({url: "http://www.baidu.com",method: "post",params: {name: "1",age: 18},success: function (result) {console.log(result);}
})
三、JS里的值或内容输出到HTML网页中
JS通过id获取HTML网页中输入的内容使用:(.value)
一般格式如下:
var arr = document.getElementById("id").value;
将JS里的值输出到HTML网页中使用:(innerHTML)
一般格式如下:
id.innerHTML = 输出的内容或者值;
举个例子:用户在网页中输入身份证号,JS获取并提取输出其生日信息
<div class="topic2"> <div class="number"> <input type="text" class="sr" id="num" placeholder="请输入你的身份证号码" name="username"> <button class="tj" onclick="get()">提交</button> <p>生日:</p> <p id="brth"></p> </div>
</div>
<script> function get(){ var arr = document.getElementById("num").value; //获取html代码中输入的身份张号码 var brth = document.getElementById("brth"); var year = arr.slice(6,10); var month = arr.slice(10,12); var date = arr.slice(12,14); //slice函数提取指定范围的数 if(arr.length == 18) birthday = year + '年' + month + '月' + date + '日'; else birthday = '请输入正确的身份证号!' brth.innerHTML = birthday; //输出显示到网页中 }
</script>
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具以及黑客技术电子书和视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~
四、Javascript页面后退前进刷新示例
1、页面刷新示例
为了及时反映站点数据的变化,通常需要页面进行自动刷新;可以将刷新结果指向当前页面,也可以转换到指定页面。重点是meta元素,其属性“HTTP-EQUIV”设置为“refresh”时,会自动刷新当前页面,此属性包含两个重要的设置:CONTENT和URL,CONTENT表示自动刷新的时间间隔,URL表示刷新后的页面地址。
<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8" HTTP-EQUIV="refresh" CONTENT="3;URL=http://www.baidu.com"> <title>猿小猴子</title>
</head>
<body>
<table id="mytbl" width="300" height="50" border="0" cellspacing="2" cellpadding="0"
bgcolor="#FFb609"> <tr> <td> 第一行第一列</td> <td> 第一行第二列</td> </tr> <tr> <td> 第二行第一列</td> <td> 第二行第二列</td> </tr>
</table>
</body>
</html>
页面自动刷新实例的运行效果如图所示:
2、页面的后退与前进示例
后退和前进是页面浏览时最常用的操作,系统自带浏览器可以完成这三个功能,在Web应用系统中,有时需要屏蔽浏览器的工具栏,此时需要使用代码实现页面的这三个操作。重点是“history”对象,其用来存储浏览器的历史记录,其参数为正数时,表示前进页面,负数则表示后退页面,如要后退2页则使用“history.go(-2)”。
<script language="javascript">
function back()
{ history.go(-1); //后退1页
}
function forward()
{ history.go(+1); //前进1页
}
function refresh()
{ history.go(-0) //刷新
}
</script><input type=button value=后退 onclick="back()">
<input type=button value=刷新 onclick="refresh()">
<input type=button value=前进 onclick="forward()">
后退、刷新、前进操作按钮的运行界面如图所示:
五、Javascript实现文件上传
在JavaScript中,你可以使用HTML5提供的File API来实现文件的上传功能。File API允许你通过JavaScript访问用户选择的文件,并将其上传到服务器。下面是一个使用File API实现文件上传的示例:
<!-- HTML -->
<input type="file" id="file-input">
<button onclick="uploadFile()">上传</button>// JavaScript
function uploadFile() { const fileInput = document.getElementById('file-input'); const file = fileInput.files[0];if (file) { const formData = new FormData(); formData.append('file', file);fetch('upload-url', { method: 'POST', body: formData }) .then(response => {// 处理响应 console.log('文件上传成功!') }) .catch(error => { // 处理错误 console.error('文件上传失败:', error); }); } else { console.error('未选择文件!'); }
}
在上述示例中,我们首先定义了一个包含文件选择框和上传按钮的HTML结构。当用户点击上传按钮时,调用uploadFile
函数。
uploadFile
函数获取文件输入框的DOM元素,并使用files
属性获取用户选择的文件。我们创建了一个FormData
对象,将文件添加到该表单数据中,使用append
方法指定文件字段名为file
。
然后,我们使用fetch
方法发送HTTP POST请求到上传URL(请替换为真实的上传URL),并将formData
作为请求的主体数据。在响应处理中,你可以根据需要对成功上传和错误情况进行处理。
需要注意的是,由于安全限制,JavaScript在浏览器中无法直接访问文件的内容,只能通过用户主动选择文件才能获取到。另外,上传文件需要与服务器进行交互,你需要根据你的服务器端实现来处理接收和保存上传的文件。
总结起来,使用File API可以轻松实现文件的上传功能。通过获取用户选择的文件,创建FormData
对象并使用fetch
方法将文件发送到服务器,从而实现文件上传。
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取
👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
相关文章:

【网络安全零基础入门】一文搞懂Javascript实现Post请求、Ajax请求、输出数据到页面、实现前进后退、文件上传
文章目录 一、Javascript原生post请求写法二、原生JS封装Ajax请求三、JS里的值或内容输出到HTML网页中四、Javascript页面后退前进刷新示例五、Javascript实现文件上传👉1.成长路线图&学习规划👈👉2.网安入门到进阶视频教程👈…...

NVR管理平台EasyNVR多个NVR同时管理综合应用方案
为了推动应急管理能力的现代化,应急管理部提出了加速现代信息技术与应急管理业务深度融合的宏伟蓝图。这一计划不仅是国家加强和改进应急管理工作的战略重点,也是应对当前应急管理形势的严峻挑战和满足人民群众对公共安全需求的必要举措。 为了实现应急管…...

SpringBoot核心框架之AOP详解
SpringBoot核心框架之AOP详解 一、AOP基础 1.1 AOP概述 AOP:Aspect Oriented Programming(面向切面编程,面向方面编程),其实就是面向特定方法编程。 场景:项目部分功能运行较慢,定位执行耗时…...

Linux: network: ifconfig已经过时,建议使用ip addr相关命令
最近有一个同事在问网络的问题,在debug的过程中还在使用ifconfig命令查看IP的相关信息。 但是这个ifconfig已经不推荐使用了,最好使用ip 相关的命令做操作。 有些信息使用ifconfig显示不出来 ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500ine…...

Flutter 鸿蒙next中的路由使用详解【基础使用】
✅近期推荐:求职神器 https://bbs.csdn.net/topics/619384540 🔥欢迎大家订阅系列专栏:flutter_鸿蒙next 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...

基于SSM+小程序民宿短租管理系统(民宿1)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序民宿短租管理系统实现了管理员、用户及房主 1、管理员可以管理民宿信息和订单信息用户管理、房主管理、房间类型管理、预定管理等。 2、房主可以管理自己的民宿和订单 3、…...

SQL LIKE 操作符
SQL LIKE 操作符 在SQL中,LIKE 操作符用于在查询中搜索列中的特定模式。它通常与 % 和 _ 通配符一起使用,分别代表任意数量的字符和单个字符。LIKE 操作符在数据过滤和模式匹配方面非常有用,尤其是在处理大量文本数据时。 LIKE 操作符的基本…...

七款主流图纸加密软件强力推荐|2024年CAD图纸加密保护指南
在当今信息化的设计行业,保护CAD图纸的知识产权和数据安全变得尤为重要。随着越来越多的企业采用数字化设计和共享文件,如何防止CAD图纸被未经授权的访问和窃取成为了许多设计师和企业关注的焦点。为此,选用合适的图纸加密软件是保护CAD文件安…...

【STM32】单片机ADC原理详解及应用编程
本篇文章主要详细讲述单片机的ADC原理和编程应用,希望我的分享对你有所帮助! 目录 一、STM32ADC概述 1、ADC(Analog-to-Digital Converter,模数转换器) 2、STM32工作原理 二、STM32ADC编程实战 (一&am…...

C# 委托简述
1.委托 1.1什么是委托 委托委托 官网解释: 委托是安全封装方法的类型,类似于 C 和 C 中的函数指针。 与 C 函数指针不同的是,委托是面向对象的、类型安全的和可靠的。 委托的类型由委托的名称确定。 个人理解:委托就是一个方法的模板。它可以接收…...

瑞吉外卖项目
目录 Day01业务开发 一、项目总体介绍与展示 二、软件开发整体介绍 (一)软件开发流程 三、瑞吉外卖项目介绍 (一)项目介绍 (二)技术选型功能架构 1.技术选型—— 编辑2.功能架构—— 编辑 &a…...

Docker:4、龙晰(Anolis OS 8.8)宝塔面板安装
接上文Docker:1、基于龙晰 (Anolis OS 8.8 )的基础镜像制作,本节我们介绍:基于Docker的龙晰(Anolis OS 8.8 )宝塔安装。 在第一节中由于我们对 Docker 容器进行了SSH设置,这为我们这…...

多端项目开发全流程详解 - 从需求分析到多端部署
引言 在当今互联网时代,一个完整的产品常常需要覆盖多个终端,包括小程序、Web端(后台管理系统)、App端等。本文将详细介绍一个采用前后端分离架构的多端项目开发流程,重点分析各个终端的特点、功能定位及其开发要点。…...

4.5KB原生html+js+css实现图片打印位置的坐标和尺寸获取
一般用于图片打印文字或图片的坐标获取,代码来自AI有改动。 功能:本地图选择后不上传直接可比划线条作为对角线得到矩形,动态显示坐标 按下鼠标开始松开鼠标结束。有细微BUG但不影响坐标获取。 <!DOCTYPE html> <html lang"en">…...

智诊小助手-记录模式选择
记录模式总共有连续记录、硬件触发、软件触发、错误触发四种模式选择,并且在选择完记录模式后还可以设置保留触发点前报文条数、存储时间、录制通道、保存类型 配置过程如下: 点击下面右图中模式选择即可进入到左图中的参数配置界面 如上图选择的配置…...

JDBC: Java数据库连接的桥梁
什么是JDBC? Java数据库连接(Java Database Connectivity,简称JDBC)是Java提供的一种API,允许Java应用程序与各种数据库进行交互。JDBC提供了一组标准的接口,开发者可以利用这些接口执行SQL语句、处理结果集…...

英伟达GPU算力【自用】
GPU(图形处理单元)算力的提升是驱动当代科技革命的核心力量之一,尤其在人工智能、深度学习、科学计算和超级计算机领域展现出了前所未有的影响力。2024年的GPU技术发展,不仅体现在游戏和图形处理的传统优势上,更在跨行…...

「C/C++」C++11 之 智能指针
✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

算法面试小抄
第一章:算法与数据结构要点速学 1.时间复杂度 (大 O) 首先,我们来谈谈常用操作的时间复杂度,按数据结构/算法划分。然后,我们将讨论给定输入大小的合理复杂性。 数组(动态数组/列表) 规定 n arr.length, 注意: &am…...

当有违法数据时,浏览器不解析,返回了undefined,导致数据不解析
现象:页面上没有看到数据 排查:断点到线上的源码里:1、协议回调确实没有拿到数据是个undefined 2、network里看服务确实响应了数据 3、控制台没有任何报错。 心情:莫名其妙的现象 我本地有json格式化工具,copy进去后&…...

在MySQL中ORDER BY使用的那种排序算法
在 MySQL 中,ORDER BY 子句的排序算法通常根据场景、数据量和表的索引情况而有所不同。MySQL 常用的排序算法包括: 文件排序(File Sort):MySQL 没有使用索引排序的情况下,会进行文件排序,这可以…...

学习threejs,使用粒子实现雨滴特效
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Points简介1.11 ☘️…...

分布式-单元化架构1
一 两地三中心 1.1 两地三中心* 两地指的是两个城市:同城,异地。三中心指的是三个数据中心:生产中心、同城容灾中心、异地容灾中心。 在同一个城市或者临近的城市建设两个相同的系统,双中心具备相当的业务处理能力,…...

C++模板、STL
目录 一、模板 1、函数模板 (1)、基本语法和使用 (2)、函数模板注意事项 (3)、普通函数与函数模板的区别 (4)、普通函数与函数模板的调用规则 (5)、模板的局限性 2、类模板 (1)、基本语法 (2)、类模板与函数模板区别 (3)、类模板中成员函数创建时机 (4)、类模板对象…...

计算机视觉中的点算子:从零开始构建
Hey小伙伴们!今天我们要聊的是一个非常基础但极其重要的计算机视觉技术——点算子(Point Operators)。点算子主要用于对图像的每个像素进行独立的处理,比如亮度调整、对比度增强、灰度化等。通过这些简单的操作,我们可…...

国际中文教育知识图谱问答
你还在为毕业设计头疼么?想快速搭建一个智能化系统,展示数据又能精准回答问题?那你绝对不能错过这个超实用的 知识图谱问答系统,特别适用于需要整合复杂数据关系、交互性强的项目! 这个系统基于 Neo4j图数据库 开发&a…...

酒店大板轻触开关与传统的开关有什么区别
酒店大板轻触开关与传统的开关在功能、设计、使用方式以及安装维护等多个方面都存在显著的差异。以下是对这些差异的详细分析: 功能差异 酒店大板轻触开关: 多功能性:酒店大板轻触开关通常集成了多种功能,如控制照明、窗帘、夜灯、…...

【蓝桥杯选拔赛真题78】python电话号码 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
目录 python电话号码 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python电话号码 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…...

对比两个json串的diff,支持map的深度递归
背景 项目重构,对老接口进行技术改造。动代码后,难免会有些bug,我们需要对比改造前后接口的返回,来判断逻辑是否有问题,这就涉及两个json的对比。 常规的diff文本工具是按行对比,无法处理复杂的map。本文通…...

【我的创作纪念日1024】
我的创作纪念日1024 机缘成就明年的规划 机缘 过去的1024个日子里,我在专业发展、职场和发展、科技创新创业、软件开发、人工智能、虚拟现实、区块链等栏目分享了一些工作和学习的建议和体会。尤其是在2022年,我连续发布100篇的博文,不仅仅是…...