使用nodeJs的express+axios+cors做代理

使用nodeJs的express+axios+cors做代理

前端在請求后端時通常會遇到跨域cors問題,如果只在本地開發可以通過webpack或vite的proxy設置。但如果需要在線上或者其他地方繞過跨域,可以使用代理的方法。

1. 創建文件夾

并創建以下文件
package.json

{"name": "proxy","version": "1.0.0","description": "","main": "proxy.js","scripts": {"start": "node index.js","start:pm2": "pm2 start index.js --name your-app-name"},"author": "","license": "ISC","dependencies": {"axios": "^1.8.4","cors": "^2.8.5","express": "^3.5.3"}
}

index.js

const express = require("express");
const axios = require("axios");
const cors = require("cors");// 創建 Express 應用
const app = express();// 使用中間件解析 JSON 和 URL 編碼的請求體
app.use(express.json());
app.use(express.urlencoded({ extended: true }));// 使用 CORS 中間件,允許跨域請求,并設置 credentials 為 true
app.use(cors({origin: function (origin, callback) {// 允許所有來源的請求callback(null, true);},credentials: true, // 允許攜帶憑證})
);// 目標地址
const TARGET_URL = "https://www.baidu.com/apis";// 代理路由
app.use("/apis", async (req, res) => {try {// 獲取客戶端請求的路徑和查詢參數const path = req.path;const queryParams = req.query;// 構造目標 URLconst targetUrl = `${TARGET_URL}${path}`;// 轉發請求到目標地址const response = await axios({method: req.method,url: targetUrl,params: queryParams,headers: {...req.headers,host: new URL(TARGET_URL).host, // 替換 Host 頭為目標地址的主機名},data: req.body, // 如果是 POST/PUT 請求,轉發請求體});// 將目標服務器的響應返回給客戶端res.status(response.status).send(response.data);} catch (error) {// 處理錯誤if (error.response) {// 如果目標服務器返回了錯誤響應res.status(error.response.status).send(error.response.data);} else {// 其他錯誤res.status(500).send({ error: "Proxy request failed" });}}
});// 啟動服務器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {console.log(`Proxy server is running on port ${PORT}`);
});

2. 執行npm i

3. 執行

提供node或PM2兩種執行方式

  • npm run start
  • npm run start:pm2

之后所有訪問 http://localhost:3000/apis的請求將被代理到https://www.baidu.com/apis;具體可以自行配置

4. 部署線上 node 方式

  1. 打開寶塔->軟件商店->安裝node.
    在這里插入圖片描述

  2. 創建一個文件夾,并將下面三個文件放上去在這里插入圖片描述

  3. 點擊終端,執行npm i

  4. 創建一個node項目,配置啟動命令和端口
    在這里插入圖片描述
    啟動成功后訪問寶塔IP:3000/apis將會被代理到https://www.baidu.com/apis

4. 部署線上 pm2 方式

  1. 打開寶塔->軟件商店->PM2管理器
    在這里插入圖片描述
  2. 同上
  3. 同上
  4. 配置pm2
    在這里插入圖片描述
    啟動成功后訪問寶塔IP:3000/apis將會被代理到https://www.baidu.com/apis

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77480.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77480.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77480.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

T檢驗、F檢驗及樣本容量計算學習總結

目錄 〇、碎語一、假設檢驗1.1 兩種錯誤1.2 z檢驗和t檢驗1.3 t檢驗1.3.1 單樣本t檢驗1.3.2 配對樣本t檢驗1.3.3 獨立樣本t檢驗1.4 方差齊性檢驗1.4 卡方檢驗二、樣本容量的計算2.1 AB測試主要的兩種應用場景2.2 絕對量的計算公式2.3 率的計算公式參考資料〇、碎語 聽到最多的檢…

tensorflow使用詳解

一、TensorFlow基礎環境搭建 安裝與驗證 # 安裝CPU版本 pip install tensorflow# 安裝GPU版本(需CUDA 11.x和cuDNN 8.x) pip install tensorflow-gpu# 驗證安裝 python -c "import tensorflow as tf; print(tf.__version__)"核心概念 Tensor…

Redis的阻塞

Redis的阻塞 Redis的阻塞問題主要分為內在原因和外在原因兩大類,以下從這兩個維度展開分析: 一、內在原因 1. 不合理使用API或數據結構 Redis 慢查詢 Redis 慢查詢的界定 定義:Redis 慢查詢指命令執行時間超過預設閾值(默認 10m…

SLAM學習系列——ORB-SLAM3安裝(Ubuntu20-ROS/Noetic)

ORB-SLAM3學習(Ubuntu20-ROS) 0 主要參考文獻1 ORB-SLAM3安裝環境配置1.0 前言1.0.0 關于ORB-SLAM3安裝版本選擇1.0.1 本文配置操作匯總(快速配置)1.0.1.1 ORB_SLAM3環境配置:1.0.1.2 ORB_SLAM3安裝1.0.1.3 ORB_SLAM的ROS接口 1.1 C&#xff…

【應用密碼學】實驗二 分組密碼(2)

一、實驗要求與目的 1) 學習AES密碼算法原理 2) 學習AES密碼算法編程實現 二、實驗內容與步驟記錄(只記錄關鍵步驟與結果,可截圖,但注意排版與圖片大小) 字符串加解密 運行python程序,輸入…

區塊鏈基石解碼:分布式賬本的運行奧秘與技術架構

區塊鏈技術的革命性源于其核心組件——分布式賬本(Distributed Ledger)。這一技術通過去中心化、透明性和不可篡改性,重塑了傳統數據存儲與交易驗證的方式。本文將從分布式賬本的核心概念、實現原理、應用場景及挑戰等方面展開,揭…

AUTOSAR_RS_ClassicPlatformDebugTraceProfile

AUTOSAR經典平臺調試、跟蹤與分析支持 AUTOSAR組件調試、跟蹤與分析功能詳解 目錄 簡介ARTI核心擴展 核心特定ARTI擴展結構核心參數定義 操作系統和任務擴展 OS特定ARTI擴展任務特定ARTI擴展軟件組件特定擴展 總體架構 組件結構接口定義 錯誤處理 默認錯誤跟蹤器(DET) 總結 1.…

SpringBoot配置RestTemplate并理解單例模式詳解

在日常開發中,RestTemplate 是一個非常常用的工具,用來發起HTTP請求。今天我們通過一個小例子,不僅學習如何在SpringBoot中配置RestTemplate,還會深入理解單例模式在Spring中的實際應用。 1. 示例代碼 我們首先來看一個基礎的配置…

DPIN在AI+DePIN孟買峰會闡述全球GPU生態系統的戰略愿景

DPIN基金會在3月29日于印度孟買舉行的AIDePIN峰會上展示了其愿景和未來5年的具體發展計劃,旨在塑造去中心化算力的未來。本次活動匯集了DPIN、QPIN、社區成員和Web3行業資深顧問,深入探討DPIN構建全球領先的去中心化GPU算力網絡的戰略,該網絡…

央視兩次采訪報道愛藏評級,聚焦生肖鈔市場升溫,評級幣成交易安全“定心丸”

CCTV央視財經頻道《經濟信息聯播》《第一時間》兩檔節目分別對生肖賀歲鈔進行了5分鐘20秒的專題報道。長期以來,我國一直保持著發行生肖紀念鈔和紀念幣的傳統,生肖紀念鈔和紀念幣在收藏市場保持著較高的熱度。特別是2024年初,央行發行了首張賀…

【計算機哲學故事1-2】輸入輸出(I/O):你吸收什么,便成為什么

“我最近,是不是廢了……”她癱在沙發上,手機扣在胸口,盯著天花板自言自語。 我坐在一旁,隨手翻著桌上的雜志,沒接話,等著她把情緒發泄完。 果然,幾秒后,她重重地嘆了口氣&#xf…

封裝el-autocomplete,接口調用

組件 <template><el-autocompletev-model"selectedValue":fetch-suggestions"fetchSuggestions":placeholder"placeholder"select"handleSelect"clearablev-bind"$attrs"/> </template><script lang&…

GPUStack昇騰Atlas300I duo部署模型DeepSeek-R1【GPUStack實戰篇2】

2025年4月25日GPUStack發布了v0.6版本&#xff0c;為昇騰芯片910B&#xff08;1-4&#xff09;和310P3內置了MinIE推理&#xff0c;新增了310P芯片的支持&#xff0c;很感興趣&#xff0c;所以我馬上來搗鼓玩玩看哈 官方文檔&#xff1a;https://docs.gpustack.ai/latest/insta…

Linux進程詳細解析

1.操作系統 概念 任何計算機系統都包含?個基本的程序集合&#xff0c;稱為操作系統(OS)。籠統的理解&#xff0c;操作系統包括&#xff1a; ? 內核&#xff08;進程管理&#xff0c;內存管理&#xff0c;文件管理&#xff0c;驅動管理&#xff09; ? 其他程序&#xff08…

解決兩個技術問題后小有感觸-QZ Tray使用經驗小總結

老朋友都知道&#xff0c;我現在是一家軟件公司銷售部門的項目經理和全棧開發工程師&#xff0c;就是這么“奇怪”的崗位&#xff0c;大概我是公司銷售團隊里比較少有技術背景、銷售業績又不那么理想的銷售。 近期在某個票務系統項目上駐場&#xff0c;原來我是這個項目的項目…

Centos 7.6安裝redis-6.2.6

1. 安裝依賴 確保系統已經安裝了必要的編譯工具和庫&#xff1a; sudo yum groupinstall "Development Tools" -y sudo yum install gcc make tcl -y 2. 解壓 Redis 源碼包 進入 /usr/local/ 目錄并解壓 redis-6.2.6.tar.gz 文件&#xff1a; cd /usr/local/ sudo ta…

Ejs模版引擎介紹,什么是模版引擎,什么是ejs,ejs基本用法

** EJS 模板引擎**&#xff0c;讓你徹底搞明白什么是模板引擎、什么是 EJS、怎么用、語法、最佳實踐等等&#xff1a; &#x1f4da; 一、什么是模板引擎&#xff1f; 模板引擎是前后端分離之前的一種服務器端“渲染技術”。它的主要作用是&#xff1a; 將 HTML 頁面和后端傳遞…

2025.4.21-2025.4.26學習周報

目錄 摘要Abstract1 文獻閱讀1.1 模型架構1.1.1 動態圖鄰接矩陣的構建1.1.2 多層次聚合機制模塊1.1.3 AHGC-GRU 1.2 實驗分析 總結 摘要 在本周閱讀的論文中&#xff0c;作者提出了一種名為AHGCNN的自適應層次圖卷積神經網絡。AHGCNN通過將監測站點視為圖結構中的節點&#xf…

6.1 客戶服務:智能客服與自動化支持系統的構建

隨著企業數字化轉型的加速&#xff0c;客戶服務作為企業與用戶交互的核心環節&#xff0c;正經歷從傳統人工服務向智能化、自動化服務的深刻變革。基于大語言模型&#xff08;LLM&#xff09;和智能代理&#xff08;Agent&#xff09;的技術為構建智能客服與自動化支持系統提供…

java Optional

我還沒用過java8的一些語法&#xff0c;有點老古董了&#xff0c;記錄下Optional怎么用。 從源碼看&#xff0c;Optional內部持有一個對象&#xff0c; 有一些api對這個對象進行判空處理。 靜態方法of &#xff0c;生成Optional對象&#xff0c; 但這個value不能為空&#…