Javascript axios delete调用返回405
我们正在后台运行一个Tornado服务,它接受来自React应用程序的post和delete调用 我们的axios.post调用工作正常,但删除请求失败,并显示以下错误消息 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
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());