小迪Web自用筆記30

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…