Node.js

原生态的js运行在前端。

Node.js:他与原生态JS最大的不同,就是前端只能看到输出的代码,而看不到jS文件

 req接收,res回显

 dirname获取绝对路径

提交表单 :

 “Post路由” 到底是什么。

 

这是一个非常核心的Web开发概念。我们可以把它拆成两部分来理解:“路由” 和 “POST方法”。

 

---

 

1. 首先,什么是“路由”?

 

想象一下现实世界中的邮局:

 

· 地址:比如“北京市海淀区中关村大街27号”。这个地址唯一地指定了一个位置。

· 路由:邮局的工作人员看到这个地址,就知道应该把这封信交给“北京市海淀区中关村大街27号”的收发室。

 

在Web服务器里,这个“收发室”就是一段处理函数。

 

所以,路由 就是一套映射规则。它告诉服务器:

 

“当有人访问 这个URL(地址)并使用 这种HTTP方法(比如GET或POST)时,你就应该把请求交给 这段代码(处理函数)来负责。”

 

一个路由由三个关键部分组成:

 

1. HTTP方法:GET, POST, PUT, DELETE等。

2. URL路径:例如 /login, /users, /articles/123。

3. 处理函数:一段具体的服务器端代码。

 

---

 

2. 然后,什么是“POST方法”?

 

HTTP协议定义了几种不同的“动作”来表达客户端的意图,最主要的就是GET和POST。

 

· GET:意思是“获取”。主要用于向服务器索取数据(比如请求一个网页、查询信息)。数据通过URL参数传递。

· POST:意思是“发送”或“提交”。主要用于向服务器提交数据(比如提交登录表单、上传文件)。数据放在请求的主体(Body) 里,不会显示在URL中,更安全,也能传输更多内容。

 

---

 

3. 所以,“Post路由”到底是什么?

 

Post路由就是一条专门处理HTTP POST请求的映射规则。

 

它本质上是一条指令,告诉服务器:

 

“嘿,如果有人向 /login 这个地址发送(POST) 数据过来,你别管别人,就把这个请求交给我指定的这个函数来处理。”

 

它的工作流程如下图所示,清晰地展示了从客户端提交数据到服务器返回响应的完整过程:

 

```mermaid

flowchart TD

A[客户端 Client<br>如浏览器] -->|1. 发送POST请求<br>URL: /login<br>Body: 用户名、密码| B[服务器 Server]

 

subgraph B[服务器 Server]

    B1[接收请求]

    B2{路由匹配?}

    B2 -- 是 --> B3[POST路由<br>路径: /login<br>方法: POST]

    B3 --> B4[处理函数<br>1. 从Body提取数据<br>2. 查询数据库验证<br>3. 创建会话]

    B2 -- 否 --> B5[返回404错误]

end

 

B4 -->|4. 返回响应<br>重定向到/home或返回错误信息| A

```

 

一个具体的例子(Node.js + Express 框架)

 

```javascript

// 1. 引入Express框架

const express = require('express');

const app = express();

 

// 允许解析JSON格式的请求体

app.use(express.json());

 

// 2. 定义一个处理 GET 请求的路由

// 当用户用浏览器访问 /login 时,返回一个登录表单页面

app.get('/login', (req, res) => {

  res.send(`

    <form action="/login" method="POST">

      <input type="text" name="username" placeholder="Username">

      <input type="password" name="password" placeholder="Password">

      <button type="submit">Login</button>

    </form>

  `);

});

 

// 3. 定义的就是一个 【POST路由】!

// 当用户提交上面的表单时,表单数据会以POST方式发送到 /login

app.post('/login', (req, res) => { // 注意这里的方法是 `post`

  // 处理函数开始工作:

  // 1. 从请求Body中提取客户端发送过来的数据

*路由就是看每个Http发送过来的地址与方法,并将它送到相应的处理轨道。

post提交,get收

req query获取urL查询参数的字符串(get)

Post参数,把数据存储在数据体中

Get才是URL

如果这个东西要用post传的话,那就得要引用一个库:

 安全问题

黑盒测试:

 这张图片展示的是HTTP请求的响应头信息,其中能明确的实体信息有:

 

- Web应用的技术栈:通过  X-Powered-By: Express  可知,这个Web应用是用 Express框架(Node.js生态中常用的Web开发框架)开发的。

- 请求结果:状态码为  404 Not Found ,表示客户端请求的资源在服务器上“未找到”。

- 其他响应头细节:还包含一些安全、连接相关的配置(如  Content-Security-Policy  用于安全策略限制, Keep-Alive  用于长连接保持等)。

这玩意儿黑盒测试可以看框架↑

 

 

SQL注入:

 

 *通过用户端DIR传递,所以容易注入。

在 Node.js 的 Express 框架(或类似 Web 开发场景)中:

 

-  req  是  request  的缩写,代表请求对象,包含客户端向服务器发送的所有请求信息(如请求参数、请求头、请求方法等)。

-  res  是  response  的缩写,代表响应对象,用于服务器向客户端返回响应(如设置响应内容、响应头、结束请求等)。

 

简单说: req  管“收请求”, res  管“发响应”。

 

原型链污染:

 先找自身,再找逻辑链:

let foo={bar:1}

此时,foo.bar值等于1

Foo.__proto__.bar=2,修改foo原型的bar的属性为2

因为查找顺序,foo→bar(已被占用,已经拥有自己的bar属性),Foo.bar依然是1

当我们再创造一个新的对象zoo

zoo.bar=2了,因为公共原型被污染,而他自己也是空的,所以变成了2

Foo.proto.bra是从foo中查找bra这个最终原型,并把公共的bra(公共原型)进行修改。

就是通过foo直接用那啥函数直接查你老祖宗是谁并且进行修改。

 

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并发编程的守护者:信号量与日志策略模式解析

一、信号量 关于信号量的介绍在深入Linux内核&#xff1a;IPC资源管理揭秘 这篇文章当中已经做了初步的介绍了&#xff0c;相信大家对于信号量已经有了初步的认知了。 今天&#xff0c;我们就来探讨如何实现信号量。 1. 信号量的接口 //初始化信号量 //成功了&#xff0c;返…

conda 创建环境嵌套报错

使用conda create --prefix /path可以成功创建&#xff0c;有可能时默认路径冲突导致的 conda config --show 发现&#xff1a; envs_dirs: /root/autodl-tmp/miniconda3/envs/envs_test/path/root/autodl-tmp/miniconda3/envs/root/.conda/envs 未显式指定环境路径&#xf…

低代码核心原理总结

Web 低代码平台核心原理深度解析 1. 架构总览 Web低代码平台的核心架构包含四个关键层次&#xff1a; class LowCodePlatform {constructor() {this.visualEditor new VisualEditor(); // 可视化编辑器this.metaDataEngine new MetaDataEngine(); // 元数据引擎this.code…

操作系统研发工作心得体会 - 于复杂性中构建秩序

在操作系统&#xff08;OS&#xff09;研发这片要求极致严谨与创新的工程深海中航行数载&#xff0c;我的角色从一个纯粹的技术专家&#xff0c;逐渐演变为一个需要兼顾技术深度、系统广度与团队效能的复合型角色。这段旅程&#xff0c;让我深刻体会到&#xff0c;构建一个成功…

Excel 表格 - Excel 减少干扰、专注于内容的查看方式

Excel 减少干扰、专注于内容的查看方式 1、隐藏元素 点击 【视图】 -> 取消勾选 【网格线】 -> 取消勾选 【编辑栏】 -> 取消勾选 【标题】2、全屏显示 点击 【功能区显示选项】&#xff08;工具栏右下角小箭头&#xff09; -> 点击 【全屏模式】

C# Web API 前端传入参数时间为Utc

Web API 前端传入参数时间为Utc&#xff08;时间相差8个小时&#xff09;1.在Program.csbuilder.Services.AddControllers().AddJsonOptions(options > {// 序列化时将时间转换为本地时间&#xff08;北京时间&#xff09;options.JsonSerializerOptions.Converters.Add(new…

AI Agent开发入门:Semantic Kernel构建智能邮件助手

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 引言&#xff1a;AI Agent——下一代人机交互范式 在人工智能技术…

WebAssembly:开启高性能 Web 应用的新篇章

在互联网技术飞速发展的浪潮中&#xff0c;Web应用的性能一直是一个重要的优化目标。传统的JavaScript虽然灵活便捷&#xff0c;但在处理CPU密集型任务时&#xff0c;其性能瓶颈日益凸显&#xff0c;限制了Web应用在游戏、音视频编辑、科学计算、图像处理等高性能领域的深入发展…

001-003 产品经理-ML应用构建-ML应用范围

001-003 产品经理-ML应用构建-ML应用范围 时间&#xff1a;2025年09月08日14:48:01 备注&#xff1a;笔记回顾和复习&#xff0c;仅用于分享而非商用&#xff0c;引用内容若侵权请联系并删除。 文章目录001-003 产品经理-ML应用构建-ML应用范围导引 学习法则1 内容索引 产品经…

软件测试错题笔记

1.capitalize()表示将字符串第一个字符转换为大写 2.pop()方法&#xff1a;指定一个键&#xff08;key&#xff09;作为参数来删除并返回对应的值&#xff0c;不传入任何参数报错。 3.测试方法&#xff1a;黑盒测试&#xff08;等价类划分法、边界值分析、因果图分析&#xf…

【一文分享】安全数据交换系统是什么?哪款产品性价比高?

随着数据价值的提升&#xff0c;其流动过程中的安全风险也与日俱增。内部核心数据泄露、外部攻击、不合规传输导致的合规风险……这些问题如同悬在企业头上的“达摩克利斯之剑”。正是在这样的背景下&#xff0c;安全数据交换系统 应运而生&#xff0c;成为了保障数据安全流动的…

postgresql9.2.4 离线安装

1、创建用户[rootvkeep ~]# groupadd postgres [rootvkeep ~]# useradd -g postgres postgres -m -s /bin/bash [rootvkeep ~]# echo "Database123" | passwd --stdin postgres2、安装依赖包[rootvkeep ~]# yum install gcc gcc-c zlib-devel readline readline-deve…

【C++设计模式】第三篇:观察者模式(别名:发布-订阅模式、模型-视图模式、源-监听器模式)

C设计模式系列文章目录 【C设计模式】第一篇 C单例模式–懒汉与饿汉以及线程安全 【C设计模式】第二篇&#xff1a;策略模式&#xff08;Strategy&#xff09;–从基本介绍&#xff0c;内部原理、应用场景、使用方法&#xff0c;常见问题和解决方案进行深度解析 【C设计模式】…

运作管理学习笔记5-生产和服务设施的选址

运作管理-北京交通大学5.1.设施选址概述 设施选址是一个战略性的决策&#xff0c;做这个决策的时候会投入比较多的资源&#xff0c;而且未来去改变选址的成本和代价也比较大。 5.1.1.设施选址的重要性 设施选址影响企业经营情况 设施选址对设施布局以及投产后的生产经营费用、产…

JUnit 详解

一、JUnit 简介&#xff1a;什么是 JUnit&#xff1f;为什么要用它&#xff1f;1.1 核心定义JUnit 是一个开源的、基于 Java 语言的单元测试框架&#xff0c;最初由 Erich Gamma (GoF 设计模式作者之一) 和 Kent Beck (极限编程创始人) 在 1997 年共同开发。作为 xUnit 测试框架…

数据结构造神计划第三天---数据类型

&#x1f525;个人主页&#xff1a;寻星探路 &#x1f3ac;作者简介&#xff1a;Java研发方向学习者 &#x1f4d6;个人专栏&#xff1a;《从青铜到王者&#xff0c;就差这讲数据结构&#xff01;&#xff01;&#xff01;》、 《JAVA&#xff08;SE&#xff09;----如此简单&a…

AI API Tester体验:API测试工具如何高效生成接口测试用例、覆盖异常场景?

前阵子帮后端测试支付接口时&#xff0c;我算是彻底明白 “API 测试能磨掉半条命”—— 明明接口文档里写了十几种参数组合&#xff0c;手动写测试用例时要么漏了 “签名过期” 的场景&#xff0c;要么忘了校验 “金额超过限额” 的返回值&#xff0c;测到半夜还被开发吐槽 “你…

音频驱动数字人人脸模型

1.LatentSync: Taming Audio-Conditioned Latent Diffusion Models for Lip Sync with SyncNet Supervision 字节 2024 文章地址&#xff1a;https://arxiv.org/pdf/2412.09262 代码地址&#xff1a;https://github.com/bytedance/LatentSync 训练推理都有 2.wan2.2-s2v …

CentOS部署ELK Stack完整指南

文章目录&#x1f680; ELK Stack 部署详解&#xff08;CentOS 7/8&#xff09;&#x1f4e6; 一、环境准备1. 关闭防火墙&#xff08;或开放端口&#xff09;2. 关闭 SELinux3. 安装基础依赖4. 验证 Java&#x1f53d; 二、下载并安装 ELK 组件1. 导入 Elastic GPG 密钥2. 创建…

Spring Boot 拦截器(Interceptor)与过滤器(Filter)有什么区别?

在 Spring Boot 项目中&#xff0c;我们经常会遇到需要在请求处理前后执行一些通用逻辑的场景&#xff0c;比如记录日志、权限校验、全局异常处理等。此时&#xff0c;我们通常会面临两种选择&#xff1a;过滤器&#xff08;Filter&#xff09; 和 拦截器&#xff08;Intercept…