2017-10-10 2 views
0

Ceci est principalement destiné au développement local du service.405 Méthode non autorisée à l'aide de DELETE avec Restify et CORS

Je reçois un 405 method not allowed avec une requête DELETE utilisant Restify et CORS. Je pense que je dois oublier quelque chose. J'apprécierais vraiment de nouveaux yeux pour souligner ce que je fais mal.

Je connais le restify-cors-middleware mais je ne l'utilise pas car il n'est pas bien documenté et je n'ai pas pu le configurer correctement. Au lieu de cela, j'ai implémenté ma propre configuration CORS pour Restify. Cela fonctionne pour GET et POST, mais pas pour DELETE.

// allows localhost to work 
if (process.env.DEV === 'true') { 
    app.pre((req, res, next) => { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, Content-Disposition, Origin, X-Requested-With'); 
    res.header('Access-Control-Allow-Credentials', 'true'); 
    res.header('Access-Control-Allow-Methods', 'DELETE, GET, POST, OPTIONS, PUT'); 
    res.header('access-control-max-age', 86400); 

    return next(); 
    }); 

    app.opts('/.*/', (req, res, next) => { 
    res.send(200); 
    return next(); 
    }); 
} 

Options de Preflight:

Demande

URL: http://localhost:8000/f388798f20e0d496023812a05109ea5276d2eb3d41f8eb5b58c9d43da9b7a001-leWWTe 
Request Method:OPTIONS 
Status Code:200 OK 
Remote Address:[::1]:8000 
Referrer Policy:no-referrer-when-downgrade 

têtes de réponse

HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: Accept, Authorization, Content-Type, Content-Disposition, Origin, X-Requested-With 
Access-Control-Allow-Credentials: true 
Access-Control-Allow-Methods: DELETE, GET, POST, OPTIONS, PUT 
access-control-max-age: 86400 
Date: Tue, 10 Oct 2017 01:04:57 GMT 
Connection: keep-alive 
Transfer-Encoding: chunked 

têtes de requête

OPTIONS /f388798f20e0d496023812a05109ea5276d2eb3d41f8eb5b58c9d43da9b7a001-leWWTe HTTP/1.1 
Host: localhost:8000 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Access-Control-Request-Method: DELETE 
Origin: http://localhost:3000 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
Access-Control-Request-Headers: authorization 
Accept: */* 
Referer: http://localhost:3000/ 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8 

demande SUPPRIMER:

Demande

URL: http://localhost:8000/f388798f20e0d496023812a05109ea5276d2eb3d41f8eb5b58c9d43da9b7a001-leWWTe 
Request Method:DELETE 
Status Code:405 Method Not Allowed 
Remote Address:[::1]:8000 
Referrer Policy:no-referrer-when-downgrade 

têtes de réponse

HTTP/1.1 405 Method Not Allowed 
Server: Planet Timelapse 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: Accept, Authorization, Content-Type, Content-Disposition, Origin, X-Requested-With 
Access-Control-Allow-Credentials: true 
Access-Control-Allow-Methods: DELETE, GET, POST, OPTIONS, PUT 
access-control-max-age: 86400 
Allow: OPTIONS 
Content-Type: application/json 
Content-Length: 61 
Date: Tue, 10 Oct 2017 01:04:57 GMT 
Connection: keep-alive 

têtes de demande

DELETE /f388798f20e0d496023812a05109ea5276d2eb3d41f8eb5b58c9d43da9b7a001-leWWTe HTTP/1.1 
Host: localhost:8000 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
accept: application/json 
Origin: http://localhost:3000 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
Referer: http://localhost:3000/ 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8 

Répondre

1

Il semble que vous n'avez pas enregistré de gestionnaire pour votre méthode DELETE. La réponse montre ceci:

Autoriser: OPTIONS

Peut-être que vous ne l'avez pas câblés correctement le gestionnaire?