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

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

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

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

Заголовок 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 — Response 405 without Allow header .

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

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

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

Прежде чем начать

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

Настройка свойства ignore 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. На машине обработки сообщений откройте следующий файл в текстовом редакторе. Если он еще не существует, создайте его.

    /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. Перезапустите обработчик сообщений, как показано ниже:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. Если у вас несколько обработчиков сообщений, повторите описанные выше шаги для всех обработчиков сообщений.

Проверка того, что для свойства ignore allow, отвечающего за ошибку 405, установлено значение true в обработчиках сообщений.

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

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

  1. На машине обработчика сообщений найдите свойство 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. Если свойство успешно обновлено в обработчике сообщений, то приведенная выше команда должна отобразить значение свойства 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 , убедитесь, что вы правильно выполнили все шаги, описанные в разделе «Настройка параметра ignore allow header for 405 property в обработчиках сообщений» (установка значения true) . Если вы пропустили какой-либо шаг, повторите все шаги еще раз.
  4. Если вам по-прежнему не удается изменить свойство HTTP.ignore.allow_header.for.405 , обратитесь в службу поддержки Apigee Edge .

Настройка параметра ignore allow header for 405 property в обработчиках сообщений на значение false.

В этом разделе объясняется, как установить для свойства HTTP.ignore.allow_header.for.405 значение по умолчанию false в обработчике сообщений, используя токен в соответствии с синтаксисом, описанным в разделе «Как настроить 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.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 (значение по умолчанию), то вам больше ничего не нужно делать. То есть, пропустите следующие шаги.
  4. Если для свойства HTTP.ignore.allow_header.for.405 установлено true , выполните следующие действия, чтобы вернуть его к значению по умолчанию false .
  5. На компьютере, обрабатывающем сообщения, откройте следующий файл в текстовом редакторе:

    /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. Перезапустите обработчик сообщений, как показано ниже:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  10. Если у вас несколько обработчиков сообщений, повторите описанные выше шаги для всех обработчиков сообщений.

Проверка того, что для свойства ignore allow, вызывающего ошибку 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. На машине обработчика сообщений найдите свойство 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. Если свойство успешно обновлено в обработчике сообщений, то приведенная выше команда должна отобразить значение свойства 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 , убедитесь, что вы правильно выполнили все шаги, описанные в разделе «Настройка свойства ignore allow header for 405 в обработчиках сообщений на значение false» . Если вы пропустили какой-либо шаг, повторите все шаги заново.
  4. Если вам по-прежнему не удается изменить свойство HTTP.ignore.allow_header.for.405 , обратитесь в службу поддержки Apigee Edge .