Hostwinds Blog
Résultats de recherche pour:
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
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:
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.
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:
Chaque ressource sur un serveur est configurée pour accepter certaines méthodes HTTP.Par exemple:
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.
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:
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.
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:
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.
Les formulaires Web et les demandes JavaScript (AJAX) sont une autre source commune de 405 erreurs:
É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.
Même lorsqu'un serveur est configuré correctement, les couches de sécurité peuvent intervenir et bloquer les demandes.Les exemples incluent:
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.
À 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.
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.
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
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.
Les journaux peuvent afficher des entrées comme:
client sent an unsupported method (PUT) to /index.php
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
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.
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'
})
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.
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>
Nginx: Vérifier les directives Limit_Except:
location /api/ {
limit_except GET POST {
deny all;
}
}
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.
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.
1.Location de configuration
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
# 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.
1. ouvrir le bloc serveur de votre site
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.
<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.
1. Confirmez le contrat
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)
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.
@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)
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.
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.
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.
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.
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.
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.
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