Javascript axios delete调用返回405

Javascript axios delete调用返回405,javascript,reactjs,axios,tornado,Javascript,Reactjs,Axios,Tornado,我们正在后台运行一个Tornado服务,它接受来自React应用程序的post和delete调用 我们的axios.post调用工作正常,但删除请求失败,并显示以下错误消息 405(方法不允许) 对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“” 从服务器端来看,这是我们目前设置的 self.set_header("Content-Type", "*") self.set_header("Access-Control-Allo

我们正在后台运行一个Tornado服务,它接受来自React应用程序的post和delete调用

我们的axios.post调用工作正常,但删除请求失败,并显示以下错误消息

405(方法不允许)

对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“”

从服务器端来看,这是我们目前设置的

    self.set_header("Content-Type", "*")
    self.set_header("Access-Control-Allow-Origin", "*")
    self.set_header("Access-Control-Allow-Headers", "*")
    self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE')
我们还注意到,在服务器端,我们只设置了下面的header-POST调用仍然有效。我认为我们在服务器端出了问题

self.set_header("Access-Control-Allow-Origin", "*")

任何帮助都将不胜感激。

您可以做的是,在API请求中允许cors: 像这样:

axios.delete(url, { crossdomain: true }) // an example
您可以以此为例,在删除请求中添加
crossdomain:true

如果cors错误仍然存在,请通知我。

这是cors问题。如错误所述,尚不允许执行
DELETE
操作。说明您必须将
DELETE
方法添加到飞行前请求的
Access Control Allow Methods
响应头中

在服务器端,使用nodejs,允许cor如下所示:

const corsMiddleware = (req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Headers', '*')
  res.header('Access-Control-Allow-Methods', 'OPTIONS, POST, DELETE')
  next()
}

app.use(corsMiddleware)

可以从所有来源和所有标题发出请求,并且允许使用
选项
POST
DELETE
方法。

对于
CORS
请求,有一个名为
CORS
的包可用。您可以将其安装为

npm install cors --save
然后您可以要求它,并将其用作示例中的中间件

const express = require('express');
const cors = require('cors');
const app = express();

app.use(cors());

有关cors npm软件包的更多信息

这可能意味着POST列在访问控制允许方法中,而DELETE则没有。您能否提供服务器对选项请求的响应?谢谢您的回复。请查看更新的问题。
const express = require('express');
const cors = require('cors');
const app = express();

app.use(cors());