Vous consultez la documentation Apigee Edge.
Accédez à la
documentation Apigee X. info
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, alors 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 y compris l'
en-tête Allow, comme expliqué dans le guide de dépannage
502 Bad Gateway - Response 405 without Allow header.
Toutefois, dans certains cas exceptionnels, il peut être impossible de corriger votre backend ou de modifier votre proxy d'API pour résoudre ce problème immédiatement.
Dans ce cas, vous pouvez définir temporairement l'en-tête "Ignorer l'autorisation" pour la propriété 405
HTTP.ignore.allow_header.for.405 au niveau du
processeur de messages. Si vous définissez cette propriété sur true, Apigee n'envoie pas 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 les étapes décrites dans ce document, assurez-vous de bien comprendre les sujets suivants :
- Lisez le guide de dépannage - 502 Bad Gateway - response 405 without Allow header (502 Passerelle incorrecte - Réponse 405 sans en-tête Allow).
- Si vous ne savez pas comment configurer les propriétés d'Edge sur Private Cloud, consultez Configurer Edge.
Définir l'en-tête "Ignorer l'autorisation" pour la propriété 405 sur "true" dans les processeurs de messages
Dans Apigee Edge, la propriété HTTP.ignore.allow_header.for.405 est définie sur
false, par défaut. Cela permet à Apigee Edge de renvoyer 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 dans les processeurs de messages.
Cette section explique comment définir la propriété
HTTP.ignore.allow_header.for.405 sur true dans les
processeurs de messages, à l'aide du jeton conformément à la syntaxe décrite dans
Configurer Edge.
-
Sur la machine du processeur de messages, ouvrez le fichier suivant dans un éditeur. S'il n'existe pas déjà, 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 dans le 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 avez plusieurs processeurs de messages, répétez les étapes ci-dessus sur tous les processeurs de messages.
Vérifier que l'en-tête "Ignorer l'autorisation" pour la propriété 405 est défini sur "true" dans les processeurs de messages
Cette section explique comment vérifier que la propriété
HTTP.ignore.allow_header.for.405 a bien été définie sur true
dans 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é dans le processeur de messages, vous devez vérifier si la propriété réelle
HTTP.ignore.allow_header.for.405 a été définie sur true.
- Sur la machine du processeur de messages, recherchez la propriété
HTTP.ignore.allow_header.for.405dans le/opt/apigee/edge-message-processor/confrépertoire et vérifiez si elle a été définie surtruecomme indiqué ci-dessous :grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Si la propriété est correctement mise à jour dans le processeur de messages, la commande ci-dessus
doit afficher la valeur de la propriété
HTTP.ignore.allow_header.for.405commetruedans 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.405estfalsevérifiez que vous avez correctement suivi toutes les étapes décrites dans Définir l'en-tête "Ignorer l'autorisation" pour la propriété 405 sur "true" dans les processeurs de messages. Si vous avez manqué une étape, répétez-les toutes correctement. - Si vous ne parvenez toujours pas à modifier la propriété
HTTP.ignore.allow_header.for.405, contactez l'assistance Apigee Edge.
Définir l'en-tête "Ignorer l'autorisation" pour la propriété 405 sur "false" dans les processeurs de messages
Cette section explique comment définir la propriété
HTTP.ignore.allow_header.for.405 sur sa valeur par défaut false
dans le processeur de messages, à l'aide du jeton conformément à la syntaxe décrite dans
Configurer Edge.
- Vérifiez si la propriété
HTTP.ignore.allow_header.for.405est définie surtrue. Pour ce faire, recherchez cette propriété dans le/opt/apigee/edge-message-processor/confrépertoire 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
truedans le processeur de messages, la commande ci-dessus doit afficher la valeur de la propriétéHTTP.ignore.allow_header.for.405commetruedans 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 indique que la propriété
HTTP.ignore.allow_header.for.405est 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.405est définie surtrue, procédez comme suit pour rétablir sa valeur par défautfalse. Sur la machine du processeur de 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 avez plusieurs processeurs de messages, répétez les étapes ci-dessus sur tous les processeurs de messages.
Vérifier que l'en-tête "Ignorer l'autorisation" pour la propriété 405 est défini sur "false" dans les processeurs de messages
Cette section explique comment vérifier que la propriété
HTTP.ignore.allow_header.for.405 a bien été définie sur false
dans les processeurs de messages.
Même si vous utilisez le jeton
conf_http_HTTP.ignore.allow_header.for.405 pour mettre à jour la valeur dans le processeur de messages, vous devez vérifier si la propriété réelle HTTP.ignore.allow_header.for.405
a été définie sur false.
- Sur la machine du processeur de messages, recherchez la propriété
HTTP.ignore.allow_header.for.405dans le répertoire/opt/apigee/edge-message- processor/confet vérifiez si elle a été définie surfalsecomme indiqué ci-dessous :grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- Si la propriété est correctement mise à jour dans le processeur de messages, la commande ci-dessus
doit afficher la valeur de la propriété
HTTP.ignore.allow_header.for.405commefalsedans 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.405esttrue, vérifiez que vous avez correctement suivi toutes les étapes décrites dans Définir l'en-tête "Ignorer l'autorisation" pour la propriété 405 sur "false" dans les processeurs de messages. Si vous avez manqué une étape, répétez-les toutes correctement. - Si vous ne parvenez toujours pas à modifier la propriété
HTTP.ignore.allow_header.for.405, contactez l'assistance Apigee Edge.