使用Express,Axios和React删除方法不起作用

时间:2018-04-23 13:24:01

标签: javascript express axios

我有一个问题,我尝试使用Express, Axios and React删除方法,但是他们提出的错误是无效...

我的代码AXIOS.JS with REACT



remove = (name, id) => {
  axios.delete('http://127.0.0.1:9000/people/' + id).
  then((response => id.splice(name, 1)))
}




我的EXPRESS.JS



app.delete('/people', function (req, res) {
  res.send('DELETE request to homepage');
});




错误:

  

选项http://127.0.0.1:9000/people/0 404(未找到)

     

无法加载http://127.0.0.1:9000/people/0:对预检请求的响应未通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:3000'因此不允许访问。响应的HTTP状态代码为404.

     

未捕获(承诺)错误:网络错误       at createError(createError.js:16)       在XMLHttpRequest.handleError(xhr.js:87)

有人帮我吗?

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试将ID作为请求参数发送给您支持的。

你必须

更改axios.delete('http://127.0.0.1:9000/people/' + id).

axios.delete('http://127.0.0.1:9000/people/:' id)

并且

app.delete('/people', function (req, res) {

 app.delete('/people/id', function (req, res) {

您还需要在服务器端启用CORS

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

答案 1 :(得分:0)

看起来你必须在Express中启用CORS,看一下这个答案:How to allow CORS?