被 CORS 策略阻止:对预检的响应...没有 HTTP ok 状态。标题没有解决问题

时间:2021-02-12 16:13:23

标签: node.js angular api express cors

伙计们!我正在通过构建任务管理器应用程序来练习 MEAN 堆栈开发,并且目前遇到了 CORS 问题。我似乎已经在整个互联网上尝试了不同的解决方案,然后从一个问题转向了另一个问题。目前停留在这个:

Access to XMLHttpRequest at 'http://localhost:3000//lists/602676b56197c004f12bbeaf/tasks/602676be6197c004f12bbeb0' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

我已经在我的代码中说明了这一点(但是它并没有解决问题:

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

我也试过使用浏览器扩展,通过终端禁用网络安全,没有解决问题,我记得,用代理来做对我以前的项目没有帮助...

以防万一 - 这是我的一个请求的样子:

app.patch('/lists/:listId/tasks/:taskId', (req, res) => {
    Task.findOneAndUpdate({
            _id: req.params.taskId,
            _listId: req.params.listId
        }, {
            $set: req.body
        }
    ).then(() => {
        res.sendStatus(200);
    })
});

我做错了什么吗?还有什么我应该注意和尝试的? 处理后端对我来说很难,因为这是我第一次这样做......

无论如何,我希望有人能在这个问题上启发我,我真的很感激!

干杯!

2 个答案:

答案 0 :(得分:0)

不要自己实现 cors 功能。使用库

npm install --save cors
....
var cors = require('cors')
var app = express()

app.use(cors())

答案 1 :(得分:0)

试试 cors 包

安装 npm

npm i cors --save

然后

const express = require('express');
const bodyparser = require('body-parser');
const cors = require('cors');

app.use(cors());
....

这将使 cors 无处不在,希望它有所帮助,并确保 app.use(cors()) 高于一切。