#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 делает под капотом, чтобы заставить его работать.