HTTP 405 Method Not Allowed : ce que cela signifie et comment le corriger

HTTP 405 Method Not Allowed

HTTP 405 Method Not Allowed : causes, en-tête Allow, correctifs | We.Inc

Pourquoi un serveur répond 405, l'en-tête Allow qu'il doit envoyer, et comment corriger le problème dans Flask, Express et Next.js. Générez la bonne réponse 405 pour votre propre route.

Un 405 Method Not Allowed signifie que l'URL existe mais n'accepte pas la méthode HTTP utilisée, par exemple un POST envoyé à une route qui ne gère que GET. Le serveur doit lister les méthodes qu'il accepte dans un en-tête Allow. Envoyez l'une de ces méthodes, ou ajoutez côté serveur un gestionnaire pour la vôtre.

Le 405 comparé à ses voisins

Cochez les méthodes que gère votre route, choisissez la méthode qu'envoie un client, et le générateur affiche la réponse exacte que le serveur doit renvoyer : un succès normal, ou un 405 avec un en-tête Allow listant les méthodes dans l'ordre où vous les avez cochées.

Questions fréquentes

Le 405 est-il un problème client ou serveur ?

C'est un code 4xx : c'est donc la requête que le serveur conteste. Soit le client doit utiliser une autre méthode, soit le responsable du serveur doit ajouter la prise en charge de celle qui est envoyée.

Une réponse 405 doit-elle inclure l'en-tête Allow ?

Oui. La RFC 9110 indique que le serveur doit générer un champ d'en-tête Allow listant les méthodes que la ressource prend actuellement en charge. Une liste vide est autorisée quand la ressource n'accepte aucune méthode.

Pourquoi ai-je un 405 quand j'envoie un formulaire ?

En général, le formulaire envoie une méthode que la route n'accepte pas. Une route Flask, par exemple, ne répond qu'à GET tant que vous ne passez pas methods=["GET", "POST"] au décorateur de route.

Pourquoi Express me renvoie-t-il un 404 au lieu d'un 405 ?

Express traite de la même façon une méthode et un chemin sans correspondance : aucune route n'a répondu, donc la requête tombe dans le gestionnaire 404. Ajoutez une capture du chemin avec app.all pour envoyer vous-même le 405.

Quelle est la différence entre 405 et 501 ?

Le 405 signifie que cette ressource refuse une méthode que le serveur comprend. Le 501 signifie que le serveur ne prend en charge la méthode pour aucune ressource.

La règle de la spécification

D'où vient généralement un 405

Correctifs par stack

Flask : déclarer chaque méthode acceptée par la route

Sans methods=, la route ne répond qu'à GET (Flask ajoute HEAD et OPTIONS automatiquement).

Express : envoyer un vrai 405 au lieu de tomber sur un 404

app.all placé après les vrais gestionnaires intercepte toutes les autres méthodes pour le même chemin.

Route handler Next.js : exporter la méthode que vous appelez

app/api/items/route.ts. Une requête avec une méthode que vous n'avez pas exportée ne peut pas atteindre votre code.

HTML : donner au formulaire la méthode attendue par le serveur

Un formulaire sans attribut method est envoyé en GET.

Générateur de réponse 405

Méthodes gérées par cette route

Méthode envoyée par le client

Ce que le serveur doit renvoyer

La méthode est prise en charge, donc aucun 405 n'entre en jeu.

La méthode n'est pas dans la liste, donc la réponse est un 405 avec un en-tête Allow nommant les {n} méthodes cochées.

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site