web-dev-qa-db-fra.com

Comment activer la requête DELETE?

Je ne suis pas en mesure d'autoriser la demande DELETE de mon serveur d'API en raison de 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();
});

Je reçois une erreur de console en disant:

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

Comment puis-je activer les demandes DELETE, tout comme les demandes GET, PUT et POST?

8
Anubhav Dhawan

Je l'ai résolu sans ajouter de nouveaux paquets, juste ajouté cette ligne

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

Notez que mes méthodes autorisées sont séparées par des virgules dans une chaîne. La fonction complète ressemble à ceci:

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();
});

L’un de vos en-têtes n’est pas défini correctement, alors au lieu de 

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

le mettre comme

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

Mais vous avez raison, l'utilisation du package npm est plus simple.

2
lalcaraz

Résolu en utilisant simplement cors package de npm et en activant toutes les requêtes cors, en remplaçant simplement ...

// 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();
});

avec...

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

Mais je ne suis toujours pas sûr de ce que le paquet magique cors fait sous le capot pour le faire fonctionner.

0
Anubhav Dhawan