Nodejs解决CORS跨域(适用于express框架)

mokemore 发布于 2025-02-07 184 次阅读


前段时间尝试了一下steam倒余额,想记录一下每笔交易及其折扣力度,就自己写了个记录交易的web

寻思着这么个小项目就用nodejs后端吧(正好想试一下ts),结果在前后端通信时报出了CORS跨域错误

我上一次用nodejs做后端还是写微信小程序的时候,当时后端直接在一台公网服务器上写的,而且微信小程序会自动处理跨域,当时没遇到这问题。现在前后端都在本地,用localhost访问才发现这问题。

方法一:手动配置标头

在实例化express框架后,可以使用.use方法配置标头

const express = require("express")

const app = express()

app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', '*');
    res.setHeader('Access-Control-Allow-Headers', '*');
    next();
});

这里我将所有标头设置为*,大家也可以根据实际需要具体设置

方法二:使用cors中间件

npm库里有一个cors中间件可以管理,使用前先安装

npm i cors --save

实例化express之后使用app.use(cors())

const express = require("express")
const cors = require('cors')

const app = express()

app.use(cors())

默认情况下cors()会将所有标头设为*,大家也可以根据实际需要具体设置

app.use(cors({
    origin: 'https://www.mokemore.top'
}));