Erreur HTTP 405 : Method Not Allowed

Comprendre et résoudre les erreurs de méthode HTTP.

L'erreur HTTP 405 "Method Not Allowed" indique que la mĂ©thode HTTP utilisĂ©e dans la requĂȘte (GET, POST, PUT, DELETE, etc.) n'est pas supportĂ©e par la ressource ciblĂ©e. Le serveur comprend la requĂȘte mais refuse de l'exĂ©cuter avec cette mĂ©thode.

Cette erreur est frĂ©quente lors du dĂ©veloppement d'APIs REST quand la configuration des routes est incorrecte, ou quand un client utilise la mauvaise mĂ©thode pour interagir avec un endpoint. Le serveur doit inclure un en-tĂȘte "Allow" listant les mĂ©thodes acceptĂ©es.

Pour le monitoring d'APIs, le 405 signale généralement un problÚme de configuration plutÎt qu'une panne. Cependant, un changement soudain de comportement (un endpoint qui acceptait POST et retourne maintenant 405) mérite une investigation.

Causes principales des erreurs 405

L'erreur 405 peut provenir de plusieurs sources. Voici les causes les plus fréquentes :

  • Mauvaise mĂ©thode HTTP : Utiliser POST sur un endpoint qui n'accepte que GET, ou envoyer un DELETE quand seul PUT est autorisĂ©.
  • Configuration de routage : Le framework ou le serveur web n'a pas de route dĂ©finie pour cette combinaison URL + mĂ©thode.
  • Formulaire HTML : L'attribut method du formulaire ne correspond pas Ă  ce qu'attend le serveur (ex: GET au lieu de POST).
  • Restriction serveur : Le serveur web (Apache, Nginx) peut bloquer certaines mĂ©thodes globalement ou pour certains rĂ©pertoires.

Les méthodes HTTP expliquées

Comprendre les méthodes HTTP est essentiel pour résoudre les erreurs 405 :

  • GET : RĂ©cupĂšre une ressource. Ne doit pas modifier l'Ă©tat du serveur. Peut ĂȘtre mise en cache.
  • POST : CrĂ©e une nouvelle ressource ou envoie des donnĂ©es. Le corps de la requĂȘte contient les donnĂ©es.
  • PUT / PATCH : PUT remplace complĂštement une ressource, PATCH la modifie partiellement. Les deux sont idempotents.
  • DELETE : Supprime une ressource. Doit ĂȘtre idempotent (supprimer deux fois = mĂȘme rĂ©sultat).

Résolution des erreurs 405

Selon la cause identifiée, voici les solutions à appliquer :

  • VĂ©rifier la documentation : Consultez la documentation de l'API pour connaĂźtre les mĂ©thodes acceptĂ©es par chaque endpoint.
  • Examiner l'en-tĂȘte Allow : La rĂ©ponse 405 doit contenir un en-tĂȘte Allow listant les mĂ©thodes acceptĂ©es (ex: "Allow: GET, POST").
  • Corriger le code client : Modifiez votre code pour utiliser la bonne mĂ©thode. Dans fetch() ou axios, vĂ©rifiez le paramĂštre method.
  • Configurer le serveur : Si vous contrĂŽlez le serveur, ajoutez la mĂ©thode manquante aux routes ou Ă  la configuration serveur.

Exemples de configuration

Voici des exemples pour gérer correctement les méthodes HTTP :

// JavaScript - Spécifier la méthode
fetch("/api/users/123", {
    method: "DELETE"  // ou GET, POST, PUT, PATCH
});

// PHP Laravel - Définir les routes
Route::get("/users", [UserController::class, "index"]);
Route::post("/users", [UserController::class, "store"]);
Route::put("/users/{id}", [UserController::class, "update"]);
Route::delete("/users/{id}", [UserController::class, "destroy"]);

// Express.js - Routes multiples
app.route("/users/:id")
    .get(getUser)
    .put(updateUser)
    .delete(deleteUser);

Définissez explicitement les méthodes acceptées pour chaque endpoint. Utilisez les conventions REST : GET pour lire, POST pour créer, PUT/PATCH pour modifier, DELETE pour supprimer.

Monitoring des méthodes HTTP

MoniTao permet de tester différentes méthodes HTTP :

  • Configurer la mĂ©thode : SĂ©lectionnez GET, POST, PUT ou DELETE dans la configuration du monitor selon ce que vous testez.
  • Tester les endpoints : CrĂ©ez des monitors distincts pour les diffĂ©rentes mĂ©thodes d'un mĂȘme endpoint si nĂ©cessaire.
  • DĂ©tecter les changements : Un 405 soudain sur un endpoint fonctionnel signale un changement de configuration Ă  investiguer.
  • VĂ©rifier l'en-tĂȘte Allow : Dans les dĂ©tails du check, vĂ©rifiez que l'en-tĂȘte Allow liste les mĂ©thodes attendues.

Checklist API REST

  • GET pour rĂ©cupĂ©rer des ressources (lecture)
  • POST pour crĂ©er de nouvelles ressources
  • PUT/PATCH pour modifier des ressources existantes
  • DELETE pour supprimer des ressources
  • En-tĂȘte Allow prĂ©sent dans les rĂ©ponses 405
  • Documentation des mĂ©thodes acceptĂ©es par endpoint

Questions fréquentes sur HTTP 405

Comment savoir quelles méthodes sont autorisées sur un endpoint ?

La rĂ©ponse 405 doit contenir un en-tĂȘte "Allow" listant les mĂ©thodes acceptĂ©es. Vous pouvez aussi envoyer une requĂȘte OPTIONS pour dĂ©couvrir les mĂ©thodes supportĂ©es.

Quelle est la différence entre PUT et PATCH ?

PUT remplace complĂštement la ressource (envoyez tous les champs). PATCH modifie partiellement (envoyez uniquement les champs Ă  modifier). Les deux sont idempotents.

Pourquoi mon formulaire HTML retourne 405 ?

Vérifiez l'attribut method du formulaire (

). HTML ne supporte que GET et POST. Pour PUT/DELETE, utilisez JavaScript ou un champ _method.

Le code 405 affecte-t-il le SEO ?

Non directement, car Googlebot utilise principalement GET. Cependant, si vos pages publiques retournent 405 sur GET, elles ne seront pas indexées.

Comment gérer les méthodes non supportées par HTML ?

Les formulaires HTML ne supportent que GET et POST. Pour PUT/DELETE, utilisez JavaScript fetch/axios, ou ajoutez un champ caché _method que votre framework interprÚte.

Puis-je autoriser toutes les méthodes sur un endpoint ?

Techniquement oui, mais c'est déconseillé pour la sécurité. Autorisez uniquement les méthodes nécessaires à la logique métier de chaque endpoint.

Conclusion

L'erreur HTTP 405 Method Not Allowed indique une incompatibilité entre la méthode utilisée et celles acceptées par l'endpoint. Une bonne documentation API et des conventions REST cohérentes préviennent la plupart de ces erreurs.

MoniTao vous permet de configurer la méthode HTTP de chaque monitor, assurant que vos endpoints REST répondent correctement selon la sémantique attendue. Un 405 inattendu signale un changement de configuration à investiguer immédiatement.

PrĂȘt Ă  dormir sur vos deux oreilles ?

Commencez gratuitement, sans carte bancaire.