Vous consultez la documentation d'Apigee Edge.
Consultez la
documentation Apigee X. en savoir plus
Dans la communication client-serveur, un serveur répond avec le code d'état HTTP 405
Method Not Allowed
si la
méthode de requête HTTP présentée par le client est connue du serveur, mais n'est pas compatible avec la ressource cible. De même, dans Apigee Edge, le serveur backend peut répondre avec le code d'état HTTP 405 Method Not Allowed.
Apigee Edge s'attend à ce que le serveur backend envoie des réponses 405 Method Not Allowed
avec la liste des méthodes autorisées dans l'en-tête Allow
, conformément à la spécification
RFC 7231, section 6.5.5: 405 Method Not Allowed.
L'en-tête Allow
doit être envoyé au format suivant:
Allow: HTTP_METHODS
Par exemple, si votre serveur backend autorise les méthodes GET
, POST
et HEAD
, vous devez vous assurer que l'en-tête Allow
les contient comme suit:
Allow: GET, POST, HEAD
Si le serveur backend n'envoie pas l'en-tête Allow
avec le code d'état HTTP 405 Method Not Allowed,
, Apigee renvoie le code d'état HTTP 502 Bad
Gateway
avec le code d'erreur protocol.http.Response405WithoutAllowHeader
à l'application cliente. La solution recommandée pour résoudre cette erreur consiste à corriger le serveur backend afin qu'il respecte la spécification
RFC 7231, section 6.5.5: 405 Method Not Allowed, ou à utiliser la gestion des erreurs pour répondre avec le code d'état HTTP 405 Method Not Allowed
comprenant l'en-tête Allow
, comme expliqué dans le playbook de dépannage.
502 Passerelle erronée sans en-tête de réponse 405
Toutefois, dans certains cas exceptionnels, vous ne pourrez peut-être pas corriger votre backend ni modifier votre proxy d'API afin de résoudre ce problème immédiatement.
Dans ce cas, vous pouvez définir temporairement l'en-tête d'autorisation "Ignorer" pour la propriété 405
HTTP.ignore.allow_header.for.405
au niveau du processeur de messages. Définir cette propriété sur true
empêche Apigee de renvoyer la réponse 502 Bad Gateway
aux applications clientes, même si le serveur backend envoie le code d'état HTTP 405 Method Not Allowed
sans l'en-tête Allow
.
Une fois que vous êtes en mesure de corriger votre serveur backend pour qu'il envoie le code d'état HTTP 405 Method
Not Allowed
avec l'en-tête Allow
, vous pouvez rétablir la valeur par défaut false
de la propriété HTTP.ignore.allow_header.for.405
.
Avant de commencer
Avant de suivre la procédure décrite dans ce document, assurez-vous de bien comprendre les sujets suivants:
- Consultez le playbook – 502 Bad Gateway - Response 405 sans en-tête d'autorisation.
- Si vous ne savez pas comment configurer les propriétés de Edge sur Private Cloud, consultez la section Comment configurer Edge.
Configuration de l'en-tête "Ignorer" autorisée pour la propriété 405 sur "true" sur les processeurs de messages
Dans Apigee Edge, la propriété HTTP.ignore.allow_header.for.405
est définie par défaut sur false
. Cela permet à Apigee Edge de renvoyer le 502 Bad
Gateway
avec le code d'erreur protocol.http.Response405WithoutAllowHeader
aux applications clientes si le serveur backend envoie le code d'état HTTP 405 Method Not
Allowed
sans l'en-tête Allow
. Si vous souhaitez empêcher Apigee Edge d'envoyer 502 Bad Gateway
aux applications clientes, vous devez définir la valeur de la propriété HTTP.ignore.allow_header.for.405
sur true
sur les processeurs de messages.
Cette section explique comment configurer la propriété HTTP.ignore.allow_header.for.405
sur true
sur les processeurs de messages, à l'aide du jeton conformément à la syntaxe décrite dans
Comment configurer Edge.
-
Sur l'ordinateur de traitement de messages, ouvrez le fichier suivant dans un éditeur. S'il n'existe pas encore, créez-le.
/opt/apigee/customer/application/message-processor.properties
Par exemple, pour ouvrir le fichier à l'aide de vi, saisissez la commande suivante:
vi /opt/apigee/customer/application/message-processor.properties
- Ajoutez une ligne au format suivant au fichier de propriétés :
conf_http_HTTP.ignore.allow_header.for.405=true
- Enregistrez les modifications.
- Assurez-vous que le fichier de propriétés appartient à l'utilisateur
apigee
, comme indiqué ci-dessous :chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Redémarrez le processeur de messages comme indiqué ci-dessous :
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Si vous disposez de plusieurs processeurs de messages, répétez les étapes ci-dessus sur chacun d'eux.
Vérifier que l'en-tête "ignorer" autorisé pour la propriété 405 est défini sur "true" sur les processeurs de messages
Cette section explique comment vérifier que la propriété HTTP.ignore.allow_header.for.405
a bien été mise à jour vers true
sur les processeurs de messages.
Même si vous utilisez le jeton conf_http_HTTP.ignore.allow_header.for.405
pour mettre à jour la valeur de la propriété sur le processeur de messages, vous devez vérifier si la propriété HTTP.ignore.allow_header.for.405
a été définie sur true
.
- Sur la machine de traitement des messages, recherchez la propriété
HTTP.ignore.allow_header.for.405
dans le répertoire/opt/apigee/edge-message-processor/conf
et vérifiez si elle a été définie surtrue
, comme indiqué ci-dessous :grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Si la propriété a bien été mise à jour sur le processeur de messages, la commande ci-dessus doit afficher la valeur de la propriété
HTTP.ignore.allow_header.for.405
commetrue
dans le fichierhttp.properties
, comme indiqué ci-dessous :/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- Si la valeur de la propriété
HTTP.ignore.allow_header.for.405
est toujours définie surfalse
, vérifiez que vous avez correctement suivi toutes les étapes décrites dans la section Configurer l'en-tête d'autorisation "Ignorer l'en-tête" pour la propriété 405 sur "true" dans les processeurs de messages. Si vous avez manqué une étape, répétez toutes les étapes correctement. - Si vous ne parvenez toujours pas à modifier la propriété
HTTP.ignore.allow_header.for.405
, contactez l'assistance Apigee Edge.
Configurer l'en-tête "Ignorer" d'autorisation pour la propriété 405 sur "false" sur les processeurs de messages
Cette section explique comment configurer la propriété HTTP.ignore.allow_header.for.405
sur sa valeur par défaut false
sur le processeur de messages, à l'aide du jeton selon la syntaxe décrite dans Comment configurer Edge.
- Vérifiez si la propriété
HTTP.ignore.allow_header.for.405
est remplacée partrue
. Pour ce faire, recherchez cette propriété dans le répertoire/opt/apigee/edge-message-processor/conf
et vérifiez sa valeur à l'aide de la commande suivante :grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Si la propriété est définie sur
true
sur le processeur de messages, la commande ci-dessus doit afficher la valeur de la propriétéHTTP.ignore.allow_header.for.405
en tant quetrue
dans le fichierhttp.properties
, comme indiqué ci-dessous :/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- Si la commande ci-dessus montre que la propriété
HTTP.ignore.allow_header.for.405
est définie surfalse
(valeur par défaut), vous n'avez rien d'autre à faire. Autrement dit, ignorez les étapes suivantes. - Si la propriété
HTTP.ignore.allow_header.for.405
est définie surtrue
, procédez comme suit pour rétablir sa valeur par défaut (false
). Sur l'ordinateur de traitement des messages, ouvrez le fichier suivant dans un éditeur:
/opt/apigee/customer/application/message-processor.properties
Par exemple, pour ouvrir le fichier à l'aide de vi, saisissez la commande suivante:
vi /opt/apigee/customer/application/message-processor.properties
- Supprimez la ligne suivante du fichier de propriétés :
conf_http_HTTP.ignore.allow_header.for.405=true
- Enregistrez les modifications.
- Assurez-vous que le fichier de propriétés appartient à l'utilisateur
apigee
, comme indiqué ci-dessous :chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Redémarrez le processeur de messages comme indiqué ci-dessous :
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Si vous disposez de plusieurs processeurs de messages, répétez les étapes ci-dessus sur chacun d'eux.
Vérifier que l'en-tête "allow allow" de la propriété 405 est défini sur "false" sur les processeurs de messages
Cette section explique comment vérifier que la propriété HTTP.ignore.allow_header.for.405
a bien été mise à jour vers false
sur les processeurs de messages.
Même si vous utilisez le jeton conf_http_HTTP.ignore.allow_header.for.405
pour mettre à jour la valeur sur le processeur de messages, vous devez vérifier si la propriété HTTP.ignore.allow_header.for.405
réelle a été définie sur false
.
- Sur la machine de traitement des messages, recherchez la propriété
HTTP.ignore.allow_header.for.405
dans le répertoire/opt/apigee/edge-message- processor/conf
et vérifiez si elle a été définie surfalse
, comme indiqué ci-dessous :grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Si la propriété a bien été mise à jour sur le processeur de messages, la commande ci-dessus doit afficher la valeur de la propriété
HTTP.ignore.allow_header.for.405
commefalse
dans le fichierhttp.properties
, comme indiqué ci-dessous :/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
- Si la valeur de la propriété
HTTP.ignore.allow_header.for.405
est toujours définie surtrue
, vérifiez que vous avez correctement suivi toutes les étapes décrites dans Configurer l'en-tête d'autorisation "Ignorer" pour la propriété 405 sur "false" sur les processeurs de messages. Si vous avez manqué une étape, répétez-la correctement. - Si vous ne parvenez toujours pas à modifier la propriété
HTTP.ignore.allow_header.for.405
, contactez l'assistance Apigee Edge.