Configurer l'en-tête "Allow ignore" pour ignorer la propriété 405 dans les processeurs de message

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 :

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.

  1. 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
  2. Ajoutez une ligne au format suivant dans le fichier de propriétés :
    conf_http_HTTP.ignore.allow_header.for.405=true
  3. Enregistrez les modifications.
  4. 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
    
  5. Redémarrez le processeur de messages, comme indiqué ci-dessous :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 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.

  1. Sur la machine du processeur de messages, recherchez la propriété HTTP.ignore.allow_header.for.405 dans le /opt/apigee/edge-message-processor/conf répertoire et vérifiez si elle a été définie sur true comme indiqué ci-dessous :
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. 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.405 comme true dans le fichier http.properties, comme indiqué ci-dessous :
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. Si la valeur de la propriété HTTP.ignore.allow_header.for.405 est false 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 "true" dans les processeurs de messages. Si vous avez manqué une étape, répétez-les toutes correctement.
  4. 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.

  1. Vérifiez si la propriété HTTP.ignore.allow_header.for.405 est définie sur true. Pour ce faire, recherchez cette propriété dans le /opt/apigee/edge-message-processor/conf ré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
    
  2. Si la propriété est définie sur true dans le processeur de messages, la commande ci-dessus doit afficher la valeur de la propriété HTTP.ignore.allow_header.for.405 comme true dans le fichier http.properties, comme indiqué ci-dessous :
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. Si la commande ci-dessus indique que la propriété HTTP.ignore.allow_header.for.405 est définie sur false (valeur par défaut), vous n'avez rien d'autre à faire. Autrement dit, ignorez les étapes suivantes.
  4. Si la propriété HTTP.ignore.allow_header.for.405 est définie sur true, procédez comme suit pour rétablir sa valeur par défaut false.
  5. 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
    
  6. Supprimez la ligne suivante du fichier de propriétés :
    conf_http_HTTP.ignore.allow_header.for.405=true
  7. Enregistrez les modifications.
  8. 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
    
  9. Redémarrez le processeur de messages, comme indiqué ci-dessous :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. 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.

  1. Sur la machine du processeur de 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 sur false comme indiqué ci-dessous :
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. 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.405 comme false dans le fichier http.properties, comme indiqué ci-dessous :
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
  3. Si la valeur de la propriété HTTP.ignore.allow_header.for.405 est true, 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.
  4. Si vous ne parvenez toujours pas à modifier la propriété HTTP.ignore.allow_header.for.405, contactez l'assistance Apigee Edge.