node跨域问题,踩坑篇

文章介绍了在Node.js中处理跨域问题的两种方法,特别是当客户端请求包含自定义header时,服务器端必须在Access-Control-Allow-Headers中添加这些header,否则会导致跨域错误。OPTIONS预检请求的重要性也被强调,确保正确配置可以避免许多跨域问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录 - 跨域遇到的坑

以下是记录【node】跨域的配置,

1. Cors中间件
const app = express();
app.use(cors())
这个就不用细说了吧

2. 自己配置通行

app.all('*',function(req,res,next){
    res.header("Access-Control-Allow-Origin",req.headers.origin || '*');
    res.header("Access-Control-Allow-Methods","PUT,GET,POST,DELETE,OPTIONS");
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , User-Account, User-TOken,');
    if(req.method == 'OPTIONS'){
        res.sendStatus(200);
    }
    else{
        next();
    }
});

*号代表全部,换成自己域名,ip啥都行

重点说说
如果客户端发送的请求中有自定义header的属性,则会把请求变为复杂请求。
会先发送一个OPTIONS类型的请求去服务端尝试建立链接,重点的重点一定要将前端发来的自定义请求头部加入到header中,否则会一直报跨域

例:请求

axios({
     ...option,
     // 添加自定义请求头
    headers : {
        'User-TOken' : '123456',
        'User-Account' : 'accountSky'
    }
})

后端

app.all('*',function(req,res,next){
    res.header("Access-Control-Allow-Origin",req.headers.origin || '*');
    res.header("Access-Control-Allow-Methods","PUT,GET,POST,DELETE,OPTIONS");
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , User-Account, User-TOken,');
    if(req.method == 'OPTIONS'){
        res.sendStatus(200);
    }
    else{
        next();
    }
});

必须在‘Access-Control-Allow-Headers’处添加自己自定义的请求头。

翻了很多文章都没说提到这点,
希望这篇文章能帮你节省时间~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值