在進行編程獲取別的網站數據或者在同一局域網下向其他IP地址提交和獲取數據時,都會發生跨域錯誤,在進行express框架進行服務器端編程,我常用以下方法解決跨域問題:
首先下載模塊
# Express 是一個簡潔而靈活的 node.js Web應用框架, 提供了一系列強大特性幫助你創建各種 Web 應用,和豐富的 HTTP 工具。使用 Express 可以快速地搭建一個完整功能的網站
npm i express 或者 npm install express # 首先安裝服務器模塊
npm i cors 或者 npm install cors # 再安裝解決跨域模塊
npm i axios # 用來發送請求
然后引入模塊
# 引入安裝的兩個模塊 const express = require('express'); const cors = require('cors'); const app = express(); # 初始化模塊創建個對象
最后使用模塊
app.use(express.json()); # 解析json編碼數據 app.use(express.urlencoded()); # 解析url編碼的數據 app.use(cors()); # 不加上這句代碼跨域訪問時會出現錯誤,加上就不會出現跨域錯誤情況 # 進行各種方式的請求, 第一個參數都是路由,提供給前端的接口做代理用,以post方式舉例,提供一個代理服務器 # 用nodejs請求數據然后把數據返回給前端就行 app.post("/api", (req, res) => { const { url } = req.body; // console.log(req.body); axios.get(url) .then(result => { res.json(result.data); }) .catch(err => { console.error(err); }) }) # 第一個參數是端口號 app.listen(3000, ()=>{ console.log("運行在3000端口") }); # 前端通過訪問后端提供的接口 $.post("后端接口", # 把需要請求數據的網址傳給nodejs后端 { url: "要請求數據的網址" }) .then(res => { console.log(res) # 最后后端把請求的數據返回給前端,這樣就解決了跨域,但是是由后端解決的 }) .catch(err => { console.error(err); })
解決跨域問題一般都是服務器端常做的,這種解決跨域方式自認為感覺比較簡單,就是安裝cors
模塊然后使用下即可,不需要做其他配置。