Hostwinds Blog

Résultats de recherche pour:


405 Erreur expliquée: Causes, correctifs et conseils de prévention L'image sélectionnée

405 Erreur expliquée: Causes, correctifs et conseils de prévention

par: Hostwinds Team  /  août 27, 2025


Chaque code d'état HTTP raconte une histoire sur ce qui se passe entre un client (par exemple le navigateur Web) et un serveur.Certaines histoires sont simples;200 signifie succès, 404 signifie que la page n'existe pas.Mais lorsque vous voyez la méthode 405 non autorisée, l'histoire est un peu plus intéressante.

Décomposons ce que signifie l'erreur 405, pourquoi cela se produit et comment le dépanner

Ce que signifie le code d'état 405

La réponse 405 non autorisée se produit lorsqu'un client (comme votre navigateur ou un outil API) fait une demande en utilisant une méthode HTTP que le serveur ne permet pas cette ressource.

Par exemple:

  • Une soumission de formulaire envoie un POSTE demande, mais le serveur accepte uniquement OBTENIR pour cette URL.
  • Un script envoie un METTRE demande, mais le point final est configuré pour permettre uniquement POSTE et SUPPRIMER.

Le détail important est que la page que vous essayez d'atteindre existe, mais la méthode de demande utilisée pour interagir avec elle n'est pas autorisée par le serveur.

Ce qui pourrait provoquer une erreur 405

L'erreur 405 n'a pas toujours une seule cause évidente.Il peut provenir de la façon dont une demande est faite, de la configuration du serveur, ou même à partir de couches de sécurité supplémentaires en place.Voici les situations les plus courantes qui le déclencheraient:

1. Mécarrelle HTTP Méthode

Chaque ressource sur un serveur est configurée pour accepter certaines méthodes HTTP.Par exemple:

  • Une page de produit peut permettre OBTENIR (pour récupérer les détails) mais rejeter POSTE (pour soumettre des données).
  • Un point de terminaison de l'API pourrait permettre POSTE Pour créer un nouvel élément mais renvoyez un 405 si vous essayez SUPPRIMER.

Un scénario commun est lorsqu'un développeur envoie un POSTE Demande à une URL qui a été conçue uniquement pour gérer OBTENIR.Le serveur reconnaît la ressource, mais comme la méthode n'est pas prise en charge, elle répond avec 405.

Il s'agit de l'une des causes les plus fréquentes, en particulier lorsque vous travaillez avec des formulaires, des API ou des scripts qui interagissent avec les services Web.

2. Règles de serveur mal configuré

Des serveurs Web comme Apache, Nginx et IIS donnent aux administrateurs le contrôle des méthodes HTTP autorisées.Les directives de configuration telles que la limite d'Apache ou Limit_except de Nginx peuvent bloquer explicitement certains verbes.

Par exemple:

  • Un administrateur de serveur peut configurer un site pour autoriser uniquement OBTENIR et POSTE, blocage METTRE et SUPPRIMER pour la sécurité.
  • Si les règles sont trop strictes (ou erronées), les demandes légitimes peuvent être rejetées avec un 405.

Cela peut souvent se produire après des modifications à .htaccess Fichiers, blocs de serveurs ou paramètres de filtrage de demande IIS.Même une petite faute de frappe ou une directive négligée peut entraîner des méthodes bloquées involontairement.

3. Restrictions API

Les API sont conçues avec des règles de méthode strictes.Dans une API RESTful, différents verbes HTTP correspondent généralement à des actions spécifiques:

  • OBTENIR → Récupérer les données
  • POSTE → Créer de nouvelles données
  • Mettre / patch → Mettre à jour les données existantes
  • SUPPRIMER → supprimer les données

Si un développeur appelle un point de terminaison avec la mauvaise méthode, comme l'envoi d'un METTRE à une URL qui permet uniquement POSTE, le serveur répond avec un 405.

Ceci est intentionnel, car les API sont censées appliquer des modèles d'interaction cohérents.Par exemple, l'API de Github ne vous laissera pas SUPPRIMER Un référentiel par erreur via un mauvais appel de méthode, il nécessite le verbe correct, ou vous obtiendrez une réponse 405.

4. Formulaire incorrect ou configuration ajax

Les formulaires Web et les demandes JavaScript (AJAX) sont une autre source commune de 405 erreurs:

  • Un formulaire pourrait avoir le méthode = "post" attribut, mais le serveur ne permet que OBTENIR sur cette URL.
  • Javascript aller chercher() ou Xmlhttprequest Peut être codé pour envoyer une demande de vente lorsque le backend prend uniquement le support.

Étant donné que les navigateurs gèrent automatiquement les soumissions du formulaire et de l'Ajax, même un petit décalage dans la façon dont une demande est codée par rapport à la façon dont le serveur s'attend à ce qu'il puisse déclencher cette erreur.

Les débutants le rencontrent souvent lors de l'apprentissage de la configuration des formulaires en PHP ou lorsque vous travaillez avec des frameworks frontal qui font des appels d'API.

5. Outils de sécurité

Même lorsqu'un serveur est configuré correctement, les couches de sécurité peuvent intervenir et bloquer les demandes.Les exemples incluent:

  • Pare-feu d'application Web (WAFS): Ceux-ci surveillent le trafic entrant et peuvent rejeter des méthodes telles que Put, Supprimer ou Trace pour réduire le risque d'attaques.
  • Plugins de sécurité: Dans des plates-formes comme WordPress, certains plugins désactivent certaines méthodes à l'échelle du site pour empêcher les demandes non autorisées.

Dans ces cas, le serveur lui-même pourrait prendre en charge la méthode, mais la demande est interceptée avant d'atteindre l'application.Cela conduit souvent à la confusion car les journaux peuvent afficher le serveur "rejetant" la méthode alors qu'en réalité c'est une couche de sécurité faisant le filtrage.

Comment 405 diffère des codes d'état similaires

À première vue, l'erreur 405 peut être confondue avec Autres erreurs du client et du serveur.Mais les détails comptent, et connaître les différences vous aidera à le diagnostiquer correctement.

404 introuvable

  • Ce que cela signifie: Le serveur ne trouve pas la ressource que vous demandez.
  • Exemple: Vous essayez de visiter example.com/page.html, mais la page n'existe pas du tout.
  • Différence clé par rapport à 405: Avec un 404, le problème est que la ressource elle-même n'est pas là, alors qu'avec un 405, la ressource existe - vous utilisez simplement la mauvaise méthode pour interagir avec elle.

403 Interdit

  • Ce que cela signifie: La ressource existe, mais le serveur vous empêche d'y accéder.
  • Exemple: Vous essayez peut-être de voir un répertoire privé sans autorisation appropriée.
  • Différence clé par rapport à 405: Un 403 concerne les droits d'accès, tandis qu'un 405 concerne les restrictions de méthode.

501 non implémenté

  • Ce que cela signifie: Le serveur ne reconnaît ni ne prend en charge la méthode HTTP du tout, pour une ressource.
  • Exemple: Un serveur qui ne prend pas en charge les demandes de correctifs lancera cette erreur, quelle que soit la ressource que vous essayez.
  • Différence clé par rapport à 405: Un 501 s'applique à l'ensemble du serveur, tandis qu'un 405 s'applique uniquement à une ressource spécifique.

Diagnostic de l'erreur 405

Il peut être difficile de diagnostiquer le 405 car le serveur reconnaît que la ressource existe, mais il refuse de traiter la demande de la façon dont elle a été envoyée.Pour retrouver la cause profonde, cela aide à résoudre le problème étape par étape.

1. Vérifiez les méthodes autorisées

Lorsqu'un serveur renvoie un 405, la réponse doit inclure une liste d'en-tête de permettre quelles méthodes sont prises en charge pour cette ressource.C'est la façon de dire du serveur: "Vous ne pouvez pas faire cela, mais voici ce que vous pouvez faire."

Exemple:

HTTP/1.1 405 Method Not Allowed
Allow: GET, POST
  • Si vous avez essayé de mettre, cette réponse vous indique que seuls l'obtention et le poste sont valides.
  • Vous pouvez le voir à l'aide d'outils de développeur de navigateur (onglet réseau) ou d'un outil comme Postman.
  • L'automatisation des vérifications des en-tête dans un flux de travail de débogage peut rapidement mettre en évidence l'utilisation de la méthode mal alignée sur plusieurs points de terminaison.

2. Examen des journaux des serveurs

Les journaux sont souvent le moyen le plus rapide de découvrir la cause car ils expliquent généralement directement pourquoi la demande a été rejetée et confirme que ce n'est pas un problème de connectivité plus profond.

  • Apache: Vérifier la error_log fichier, généralement dans / var / log / apache2 / ou / var / log / httpd /.
  • Nginx: Revoir error.log et accès.log, généralement dans / var / log / nginx /.
  • IIS: Ouvrez la visionneuse d'événements ou vérifiez les fichiers journaux IIS sous % SystemDrive% \ Inetpub \ logs \ logfiles \.

Les journaux peuvent afficher des entrées comme:

client sent an unsupported method (PUT) to /index.php

3. Testez le point final

Des outils comme boucle ou Facteur sont inestimables pour confirmer quelles méthodes fonctionnent réellement.Tester les points de terminaison de cette façon exclut les suppositions et vous donne une visibilité claire sur la façon dont le serveur répond aux différentes demandes.

Utilisation de Curl:

curl -i -X GET https://example.com/resource
curl -i -X POST https://example.com/resource
curl -i -X PUT https://example.com/resource
  • Si Get and Post réussisse mais que le put échoue avec un 405, vous avez identifié le décalage.

Postman donne une interface visuelle où vous pouvez basculer les méthodes de demande et voir instantanément les réponses, ce qui le rend plus adapté aux débutants.

4. Vérifiez votre code

Si le serveur autorise la méthode mais que vous obtenez toujours un 405, le problème peut être dans votre code d'application.

Formes: Assurez-vous que l'attribut de méthode de l'élément <form> correspond à ce que le serveur attend.Exemple:

 <form action="/submit" method="post">

Ajax / fetch: Vérifiez que la méthode de demande est définie correctement dans JavaScript:

 fetch('/api/data', {
  method: 'POST'
})
  • Frameworks: Certains frameworks (comme Angular, React ou Django) peuvent par défaut certaines méthodes si vous ne les définissez pas explicitement.Vérifiez votre code client et côté serveur pour les décalages.

Remarque: Cette étape est souvent où les débutants sont déclenchés, envoyant des données au bon point de terminaison mais avec le mauvais verbe.

5. Examiner la configuration du serveur

Si les en-têtes et le code semblent bien, le problème peut être des restrictions au niveau du serveur.Les administrateurs bloquent souvent les méthodes pour des raisons de sécurité, mais si les demandes légitimes sont arrêtées, l'ajustement de ces paramètres est nécessaire.

Apache: Recherchez les directives Limite ou Limitexcept dans votre .htaccess ou votre configuration principale.Exemple:

 <Limit GET POST>
   Require all granted
</Limit>
  • En cas de pointage ici, toute demande de put retournera un 405.

Nginx: Vérifier les directives Limit_Except:

 location /api/ {
   limit_except GET POST {
      deny all;
   }
}
  • Cela rejetterait des méthodes autres que l'obtention et la publication.
  • IIS: Ouvrez le gestionnaire IIS, allez pour demander le filtrage et examinez l'onglet HTTP Verbes.Les verbes bloqués comme Put ou Delete apparaîtront ici.

Fixation d'une erreur 405 par plate-forme / environnement

La réparation d'une erreur 405 dépend de la plate-forme ou de l'environnement sur lequel votre site Web ou une application s'exécute.Étant donné que chaque type de serveur et le système de gestion de contenu gère les demandes HTTP différemment, la solution peut varier.Passons en revue quelques plates-formes communes et parcourons les étapes que nous pouvons suivre pour examiner les configurations et ajuster les paramètres afin que les méthodes HTTP correctes soient autorisées.

Pré-vérification rapide (s'applique à tous)

1. Reproduisez l'erreur et lisez les en-têtes

curl -i -X PUT https://example.com/path

2. Si vous voyez Autoriser, ajustez votre demande / client pour correspondre.Si vous ne le faites pas, continuez ci-dessous.

Apache

1.Location de configuration

  • Configuration du site: /etc/apache2/sites-available/*.conf ou /etc/httpd/conf.d/*.conf
  • Règles par-dir: projet .htaccess

2. Sauvegarder le fichier que vous modifierez

sudo cp /etc/apache2/sites-available/site.conf /etc/apache2/sites-available/site.conf.bak

3. Rechercher des restrictions de méthode

  • Rechercher <Limite ...>, <Limitexcept ...>, ou Réécriture motifs qui bloquent les verbes.
# Example: only GET/POST allowed here
<LimitExcept GET POST>
  Require all denied
</LimitExcept>

4. Ajouter la (s) méthode (s) nécessaire ou supprimer le bloc restrictif

<LimitExcept GET POST PUT>
  Require all denied
</LimitExcept>

5. Valider et recharger

sudo apachectl -t
sudo systemctl reload apache2   # or: sudo systemctl reload httpd

6. Reteste avec Curl

curl -i -X PUT https://example.com/path

7. Si vous êtes toujours bloqué, vérifiez les couches de sécurité (par exemple, les journaux d'audit MOD_SECURITY) et la priorité VirtualHost.

Nginx

1. ouvrir le bloc serveur de votre site

  • Chemins communs: / etc / nginx / sites-louable /, /etc/nginx/conf.d/*.conf

2. Sauvegarder le fichier

sudo cp /etc/nginx/sites-available/site.conf /etc/nginx/sites-available/site.conf.bak

3. Recherchez limit_except blocs

location /api/ {
  limit_except GET POST {
    deny all;
  }
}

4. Ajouter la (s) méthode (s) nécessaire ou supprimer le bloc si inutile

location /api/ {
  limit_except GET POST PUT {
    allow all;
  }
}

5. Tester et recharger

sudo nginx -t
sudo systemctl reload nginx

6. Reteste avec Curl

curl -i -X PUT https://example.com/api/resource

7. Si vous proxyez un serveur d'applications, confirmez en amont également la méthode.

IIS (Windows Server)

  1. Ouverte IIS Manager → Sélectionnez le site.
  2. Aller à Demande de filtrage → Verbes HTTP.
  3. Supprimez toutes les entrées de refus pour les verbes dont vous avez besoin (par exemple, put, supprimer) ou ajouter des entrées autorisent si votre stratégie nécessite explicite.
  4. Vérifier Mappages de gestionnaires: si Webdav est installé et intercepte les verbes dont vous avez besoin, supprimez ou désactivez le gestionnaire WebDAV pour ce site (ou désinstallez WebDAV si cela n'est pas nécessaire).
  5. Si présent, passez en revue web.config pour:
<system.webServer>
  <handlers> ... </handlers>
  <security>
    <requestFiltering>
      <verbs>
        <!-- Remove Deny for verbs you need -->
        <add verb="PUT" allowed="true" />
      </verbs>
    </requestFiltering>
  </security>
</system.webServer>

6. Recyclez le pool d'applications ou redémarrez le site.

7. Reteste avec Curl / Postman.

WordPress et autres plateformes CMS

  1. Re-Save Permalinks
    • Paramètres → Permaliens → Enregistrer les modifications (Cela actualise les règles de réécriture).
  2. Tester les conflits de plugin
    • Désactiver temporairement tous les plugins.
    • Réactiver un par un pour trouver le délinquant (la sécurité, le repos / API, la mise en cache et les plugins de pare-feu sont des causes courantes).
  3. Vérifiez les règles générées par la plate-forme
    • Apache: sections .htaccess ajoutées par les plugins.
    • Nginx: Blocs de serveur ajoutés pour la mise en cache / la sécurité qui peuvent contenir des filtres Limit_Except ou Method.
  4. Si vous utilisez l'API CMS REST, vérifiez les méthodes acceptées sur le point de terminaison et ajustez le client ou la configuration d'itinéraire en conséquence.
  5. Retester les actions clés (formulaires, connexions, actions d'administration) après chaque modification.

API (Général)

1. Confirmez le contrat

  • Vérifiez les documents API pour les méthodes autorisées de chaque point de terminaison et les chemins attendus.

2, sonde le point final

# Discover allowed methods (if supported)
curl -i -X OPTIONS https://api.example.com/v1/items/123
# Then try the method you intend
curl -i -X PATCH https://api.example.com/v1/items/123

3. Correction du client ou du serveur (exemples)

  • Correction du client: Envoyez la méthode que le point de terminaison prend en charge (par exemple, publier au lieu de put).
  • Express (Node.js)
 app.post('/items', createItem);
app.put('/items/:id', updateItem);
// If PUT not defined, add it—or switch your client to POST if that's the design.
  • Flash (Python)
 @app.route('/items/<id>', methods=['GET','POST','PUT','DELETE'])
def item(id): ...

4. Réglez un 405 utile avec En-tête d'autorisation (côté serveur)

  • Si votre framework ne le définit pas automatiquement, ajoutez les méthodes autorisées de liste d'en-tête.

5. Si vous êtes froncé par une passerelle API / WAF, révisez les règles de filtrage de la méthode.

6. Reteste avec Postman / Curl et confirmez le flux attendu 2xx / 3xx / 4xx.

Après le correctif: liste de vérification rapide

  • L'action renvoie désormais un succès ou la bonne erreur (pas 405).
  • Autoriser l'en-tête répertorié avec précision les méthodes autorisées.
  • Les journaux montrent une manipulation normale, pas un verbe bloqué.
  • Les tests automatisés (si vous les avez) couvrent le chemin et la méthode corrigés.

Empêcher 405 erreurs à l'avenir

La réparation d'une erreur 405 lorsqu'elle apparaît n'est que la moitié du défi - la réimpression de se reproduire est ce qui vous fait gagner du temps et de la frustration à long terme.En mettant les bonnes pratiques en place pendant le développement et la configuration, vous pouvez réduire les risques d'utilisateurs ou d'applications réalisant des méthodes non soutenues.Voici plusieurs approches qui aident à empêcher 405 des erreurs de devenir des problèmes récurrents.

Valider les méthodes dans le code

Lorsque vous écrivez des formulaires, des scripts ou des appels API, vérifiez que vous n'utilisez que des méthodes HTTP que le serveur permet.Par exemple, si votre serveur accepte la publication pour la soumission de données, assurez-vous de ne pas utiliser accidentellement Get Or.La validation des méthodes au début du développement aide également à prendre des erreurs avant d'atteindre la production.De nombreux cadres vous permettent de définir des méthodes autorisées directement dans les itinéraires ou les contrôleurs, ce qui facilite l'application de l'utilisation correcte.

Règles de serveur de documents

Les serveurs ont souvent des restrictions de méthode définies dans leurs fichiers de configuration (comme .htaccess, nginx.conf ou paramètres de passerelle API).Garder une trace de quelles méthodes sont prises en charge, il est plus facile pour les développeurs et les administrateurs de comprendre les limites.Cette documentation est particulièrement utile dans les grandes équipes ou les projets à long terme, où les règles du serveur peuvent autrement se perdre ou oublier au fil du temps.

Gestion des erreurs

Même avec une planification minutieuse, les demandes de méthode non soutenues peuvent passer.C'est pourquoi il est utile de fournir des messages d'erreur clairs lorsqu'un 405 se produit.Au lieu d'une vague «méthode non autorisée», personnalisez la réponse afin que l'utilisateur ou le développeur comprenne ce qui s'est mal passé et comment le corriger - par exemple, en incluant la liste des méthodes autorisées dans l'en-tête de réponse ou en suggérant la bonne méthode dans votre documentation.

Suivre les normes

Si vous construisez des API, vous en tenir aux meilleures pratiques de repos et aux normes HTTP permet aux clients de savoir plus facilement à quoi s'attendre.Par exemple, si vous concevez un point de terminaison pour mettre à jour une ressource, utilisez le put ou le correctif de manière cohérente.Cette prévisibilité réduit le risque d'envoi des méthodes non pris en charge et aide les développeurs externes à interagir correctement avec votre API.

Emballer

L'erreur 405 ne vous indique pas que le serveur sait que la ressource existe, mais elle ne permet pas la méthode que vous avez essayée.

Le point à retenir: Vérifiez l'en-tête Autoriser, révisez les journaux et assurez-vous que vos règles de code et de serveur correspondent aux méthodes que vous avez l'intention de prendre en charge.

Écrit par Hostwinds Team  /  août 27, 2025