Как включить запрос на УДАЛЕНИЕ?

#express #cors

#экспресс #cors

Вопрос:

Я не могу разрешить DELETE запрос с моего сервера API из-за CORS.

server.js

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

Я получаю сообщение об ошибке консоли:

XMLHttpRequest cannot load http://localhost:8080/api/users/57f5036645c04700128d4ee0. Method DELETE is not allowed by Access-Control-Allow-Methods in preflight response

Как я могу включить DELETE запросы, такие как GET , PUT , и POST запросы?

Комментарии:

1. @UmakantMane Я обновил свой запрос на внешний интерфейс следующим образом: $.ajax({ async: true, crossDomain: true, url: '...', method: 'DELETE', headers: { 'content-type': 'application/x-www-form-urlencoded', 'Authorization': '...' } }); , но это не помогло

2. @UmakantMane Оставьте комментарий вместо предложения

Ответ №1:

Я решил это без добавления новых пакетов, просто добавил эту строку

 res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE");
  

Обратите внимание, что мои разрешенные методы разделены запятыми внутри одной строки.
Полная функция выглядит следующим образом:

 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, Authorization");
  next();
});
  

Ответ №2:

Один из ваших заголовков установлен неправильно, поэтому вместо

 res.header("Access-Control-Allow-Methods", "GET", "PUT", "POST", "DELETE", "OPTIONS");
  

поместите его как

 res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
  

Но вы правы, использование пакета npm проще.

Ответ №3:

Решил это, просто используя cors-пакет npm и включив все cors-запросы, просто заменив…

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

с помощью…

 app.use(require('cors')());
  

Но я все еще не уверен, что пакет magic cors делает под капотом, чтобы заставить его работать.