Response to preflight request doesn‘t pass access control check: It does not have HTTP ok status

博客内容涉及了CORS(跨源资源共享)在处理预检请求(OPTIONS)时遇到的问题。当OPTIONS请求未返回200状态码时,POST请求不会被发送。为解决此问题,后端需要在处理特定URL时允许OPTIONS请求无需身份验证,确保预检请求成功,从而允许后续的POST请求正常执行。相关资源包括StackOverflow和GitHub上的讨论。

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

报错图片
在这里插入图片描述
答案:

app.all('*', function(req, res, next) {
    res.header('Access-Control-Allow-Origin', 'http://node.enabre.com:3000');
    res.header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, DELETE, OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Origin, Accept');
    res.header('Access-Control-Allow-Credentials', 'true');

    if (req.method.toLowerCase() === 'options') {
        res.send(200);
    } else {
        next();
    }
});

原因 :
在这里插入图片描述
如图显示,会优先请求OPTIONS方法,假如这时候没有返回200

这时候不会发出 PSOT 请求

所以这时候后端更改为在处理登录 url 时不需要对 OPTIONS 方法进行身份验证。


相关链接
1.stack overflow
2. GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值