Как настроить игнорирование заголовка Allow для свойства 405 в обработчиках сообщений

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

В процессе обмена данными между клиентом и сервером сервер возвращает код статуса HTTP 405 Method Not Allowed, если метод HTTP-запроса, представленный клиентом, известен серверу, но не поддерживается целевым ресурсом. Аналогично в Apigee Edge сервер может вернуть код статуса HTTP 405 Method Not Allowed..

Apigee Edge ожидает, что сервер отправит ответы 405 Method Not Allowed со списком разрешенных методов в заголовке Allow в соответствии со спецификацией RFC 7231, раздел 6.5.5: 405 Method Not Allowed.

Заголовок Allow должен быть отправлен в следующем формате:

Allow: HTTP_METHODS

Например, если ваш сервер поддерживает методы GET, POST и HEAD, убедитесь, что заголовок Allow содержит их в следующем виде:

Allow: GET, POST, HEAD

Если серверная часть не отправляет заголовок Allow с кодом статуса HTTP 405 Method Not Allowed,, Apigee возвращает клиентскому приложению код статуса HTTP 502 Bad Gateway с кодом ошибки protocol.http.Response405WithoutAllowHeader . Рекомендуемое решение этой проблемы – настроить сервер так, чтобы он соответствовал спецификации RFC 7231, раздел 6.5.5: 405 Method Not Allowed, или использовать обработку ошибок, чтобы возвращать код статуса HTTP 405 Method Not Allowed, включая заголовок Allow, как описано в руководстве по устранению неполадок 502 Bad Gateway – ответ 405 без заголовка Allow.

Однако в некоторых исключительных случаях исправить серверную часть или изменить прокси API, чтобы устранить эту проблему, может быть невозможно.

В таких случаях вы можете временно задать заголовок ignore allow для свойства 405 HTTP.ignore.allow_header.for.405 на уровне Message Processor. Если задать для этого свойства значение true, Apigee не будет возвращать клиентским приложениям ответ 502 Bad Gateway, даже если сервер отправит код статуса HTTP 405 Method Not Allowed без заголовка Allow.

Когда вы сможете настроить сервер так, чтобы он отправлял код статуса HTTP 405 Method Not Allowed с заголовком Allow, вы сможете вернуть для свойства HTTP.ignore.allow_header.for.405 значение по умолчанию false.

Подготовка

Прежде чем выполнять описанные в этом документе действия, убедитесь, что вы понимаете следующие темы:

Настройка игнорирования заголовка Allow для ресурса 405 в значение true в обработчиках сообщений

В Apigee Edge свойство HTTP.ignore.allow_header.for.405 по умолчанию имеет значение false. Это позволяет Apigee Edge возвращать 502 Bad Gateway с кодом ошибки protocol.http.Response405WithoutAllowHeader клиентским приложениям, если серверный сервис отправляет код статуса HTTP 405 Method Not Allowed без заголовка Allow. Если вы хотите запретить Apigee Edge отправлять 502 Bad Gateway клиентским приложениям, задайте для свойства HTTP.ignore.allow_header.for.405 значение true в процессорах сообщений.

В этом разделе рассказывается, как настроить свойство HTTP.ignore.allow_header.for.405 на true в процессорах сообщений, используя токен в соответствии с синтаксисом, описанным в статье Как настроить Edge.

  1. На компьютере Message Processor откройте в редакторе следующий файл: Если его ещё нет, создайте его.

    /opt/apigee/customer/application/message-processor.properties

    Например, чтобы открыть файл с помощью vi, введите следующее:

    vi /opt/apigee/customer/application/message-processor.properties
  2. Добавьте в файл свойств строку в следующем формате:
    conf_http_HTTP.ignore.allow_header.for.405=true
  3. Сохраните изменения.
  4. Убедитесь, что файл свойств принадлежит пользователю apigee, как показано ниже.
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. Перезапустите Message Processor, как показано ниже.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Если у вас несколько процессоров сообщений, повторите описанные выше действия для каждого из них.

Проверка того, что для свойства 405 в процессорах сообщений задано значение true для заголовка "Игнорировать разрешение"

В этом разделе рассказывается, как проверить, что ресурс HTTP.ignore.allow_header.for.405 был успешно обновлен до true на процессорах сообщений.

Несмотря на то что вы используете токен conf_http_HTTP.ignore.allow_header.for.405 для обновления значения свойства в Message Processor, вам нужно проверить, установлено ли для фактического свойства HTTP.ignore.allow_header.for.405 значение true.

  1. На компьютере Message Processor найдите свойство HTTP.ignore.allow_header.for.405 в каталоге /opt/apigee/edge-message-processor/conf и проверьте, задано ли для него значение true, как показано ниже:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Если свойство успешно обновлено в Message Processor, то команда выше должна показать значение свойства HTTP.ignore.allow_header.for.405 как true в файле http.properties, как показано ниже:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. Если вы по-прежнему видите значение для свойства HTTP.ignore.allow_header.for.405 как false, проверьте, правильно ли вы выполнили все шаги, описанные в разделе Настройка игнорирования заголовка Allow для свойства 405 на значение true в обработчиках сообщений. Если вы пропустили какой-либо шаг, повторите все действия заново.
  4. Если вам по-прежнему не удается изменить свойство HTTP.ignore.allow_header.for.405, обратитесь в службу поддержки Apigee Edge.

Настройка игнорирования заголовка Allow для свойства 405 на процессорах сообщений

В этом разделе рассказывается, как настроить свойство HTTP.ignore.allow_header.for.405 на значение по умолчанию false в Message Processor, используя токен в соответствии с синтаксисом, описанным в статье Как настроить Edge.

  1. Проверьте, изменено ли свойство HTTP.ignore.allow_header.for.405 на true. Для этого найдите нужное свойство в каталоге /opt/apigee/edge-message-processor/conf и проверьте его значение с помощью следующей команды:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Если для свойства в обработчике сообщений задано значение true, то в файле http.properties команда выше должна показать значение свойства HTTP.ignore.allow_header.for.405 как true, как показано ниже:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
  3. Если в результате выполнения команды выше для свойства HTTP.ignore.allow_header.for.405 задано значение false (по умолчанию), вам ничего делать не нужно. То есть следующие шаги можно пропустить.
  4. Если для свойства HTTP.ignore.allow_header.for.405 задано значение true, выполните следующие действия, чтобы вернуть значение по умолчанию false.
  5. На компьютере Message Processor откройте в редакторе следующий файл:

    /opt/apigee/customer/application/message-processor.properties

    Например, чтобы открыть файл с помощью vi, введите следующую команду:

    vi /opt/apigee/customer/application/message-processor.properties
    
  6. Удалите из файла свойств следующую строку:
    conf_http_HTTP.ignore.allow_header.for.405=true
  7. Сохраните изменения.
  8. Убедитесь, что файл свойств принадлежит пользователю apigee, как показано ниже.
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  9. Перезапустите Message Processor, как показано ниже.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. Если у вас несколько процессоров сообщений, повторите описанные выше действия для каждого из них.

Проверка того, что для свойства ignore allow header для 405 задано значение false в обработчиках сообщений

В этом разделе рассказывается, как проверить, что ресурс HTTP.ignore.allow_header.for.405 был успешно обновлен до false на процессорах сообщений.

Даже если вы используете токен conf_http_HTTP.ignore.allow_header.for.405, чтобы обновить значение в обработчике сообщений, вам нужно проверить, задано ли для свойства HTTP.ignore.allow_header.for.405 значение false.

  1. На компьютере Message Processor найдите свойство HTTP.ignore.allow_header.for.405 в каталоге /opt/apigee/edge-message- processor/conf и проверьте, установлено ли для него значение false, как показано ниже:
    grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
    
  2. Если свойство успешно обновлено в Message Processor, то команда выше должна показать значение свойства HTTP.ignore.allow_header.for.405 как false в файле http.properties, как показано ниже:
    /opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
  3. Если вы по-прежнему видите значение свойства HTTP.ignore.allow_header.for.405 как true, убедитесь, что вы правильно выполнили все шаги, описанные в разделе Настройка игнорирования заголовка "Разрешить" для свойства 405 на процессорах сообщений. Если вы пропустили какой-либо шаг, повторите все действия заново.
  4. Если вам по-прежнему не удается изменить свойство HTTP.ignore.allow_header.for.405, обратитесь в службу поддержки Apigee Edge.