node.js express cors解決跨域的示例代碼
什么是跨域
跨域(Cross-Origin)是指在 Web 開發(fā)中,當(dāng)一個(gè)網(wǎng)頁的源(Origin)與另一個(gè)網(wǎng)頁的源不同時(shí),就發(fā)生了跨域。同源策略(Same-Origin Policy)是瀏覽器的一項(xiàng)安全策略,限制了一個(gè)源下的文檔或腳本如何能與另一個(gè)源下的資源進(jìn)行交互。
同源是指兩個(gè) URL 具有相同的協(xié)議(http/https)、主機(jī)(domain)和端口(port)。如果這兩個(gè)URL的這三個(gè)部分中任何一個(gè)不同,就被認(rèn)為是不同源即跨域。
示例
開啟一個(gè)node服務(wù),服務(wù)地址為http://127.0.0.1:3000
postman請求
postman對服務(wù)發(fā)起post登錄請求

請求成功。postman不受跨域影響,原因主要是因?yàn)閜ostman是一個(gè)獨(dú)立的桌面應(yīng)用程序,而不是運(yùn)行在瀏覽器中的 Web 應(yīng)用。
前端請求
開啟一個(gè)前端項(xiàng)目服務(wù),比如vue

發(fā)起登錄請求
<script setup>
import axios from 'axios'
const authLogin = async () => {
try {
const { data } = await axios.post('http://127.0.0.1:3000/api/v1/users/login', {
"email": "adasdasasda1@qq.com",
"password": "pass1234"
})
} catch (error) {
throw new Error(error)
}
}
</script>
<template>
<main>
<button @click="authLogin">sign</button>
</main>
</template>
瀏覽器跨域報(bào)錯(cuò)

cors中間件解決跨域
流程
1、安裝cors依賴
npm i cors
2、引入依賴
const cors = require('cors');3、注冊中間件
全局注冊cors中間件
app.use(cors());
或?yàn)槟硞€(gè)路由注冊cors中間件
router.post('/path', cors(), controller);vue服務(wù)進(jìn)行post請求

請求成功,看到響應(yīng)頭Access-Control-Allow-Origin為*, 為cors的默認(rèn)設(shè)置
配置cors參數(shù)
const corsOptions = {
origin: 'http://192.168.110.61:5173',
//...
};
app.use(cors(corsOptions));origin: 允許訪問資源的特定源

通過查閱github文檔查看其他配置
GitHub - expressjs/cors: Node.js CORS middleware
用cors中間件配置同以下
app.all("*", (req, res, next) => {
//設(shè)置允許跨域的域名,*代表允許任意域名跨域
res.header("Access-Control-Allow-Origin", "http://192.168.110.61:5173");
})到此這篇關(guān)于node.js express cors解決跨域的示例代碼的文章就介紹到這了,更多相關(guān)express cors跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
實(shí)現(xiàn)一個(gè)完整的Node.js RESTful API的示例
本篇文章主要介紹了實(shí)現(xiàn)一個(gè)完整的Node.js RESTful API的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
使用Nodejs編寫一個(gè)腳本實(shí)現(xiàn)markdown轉(zhuǎn)pdf功能
Markdown?是一種輕量級的標(biāo)記語言,非常適合用來寫作和記錄,將?Markdown?轉(zhuǎn)換為?PDF?可以讓文檔在格式和樣式上更加統(tǒng)一,也方便在不同設(shè)備和平臺上查看和打印,在接下來的內(nèi)容中我們將講解如何使用?NodeJs?編寫一個(gè)?Markdown?轉(zhuǎn)?PDF?的腳本來實(shí)現(xiàn)我們這個(gè)想要的功能2024-05-05
通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法
今天小編就為大家分享一篇通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
node.js?使用process.argv獲取和處理命令行參數(shù)的操作
process.argv是Node.js中用于獲取命令行參數(shù)的數(shù)組,基本使用方法是通過命令行傳遞參數(shù)并在腳本中訪問這些參數(shù),參數(shù)可以根據(jù)需求進(jìn)行處理,也可以使用第三方庫如minimist或yargs來簡化參數(shù)解析,這些工具可以幫助開發(fā)者有效地管理和使用命令行參數(shù),提高腳本的靈活性和功能性2024-10-10
node.js+jQuery實(shí)現(xiàn)用戶登錄注冊AJAX交互
本篇文章主要介紹了用Node.js當(dāng)作后臺、jQuery寫前臺AJAX代碼實(shí)現(xiàn)用戶登錄和注冊的功能的相關(guān)知識。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04
Node.js實(shí)現(xiàn)爬取網(wǎng)站圖片的示例代碼
本文將利用Node.js開發(fā)一個(gè)小示例—爬取某圖片網(wǎng)站的圖片,文中涉及的知識點(diǎn)有https模塊、cheerio模塊、fs模塊和閉包,感興趣的可以了解一下2022-04-04

