Вы просматриваете документацию 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 .
Прежде чем начать
Прежде чем приступить к выполнению действий, описанных в этом документе, убедитесь, что вы понимаете следующие темы:
- Ознакомьтесь с руководством по устранению ошибки 502 Bad Gateway - ответ 405 без заголовка Allow .
- Если вы не знакомы с настройкой параметров Edge в частном облаке, прочтите статью «Как настроить Edge» .
Настройка свойства 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» .
На машине обработки сообщений откройте следующий файл в текстовом редакторе. Если он еще не существует, создайте его.
/opt/apigee/customer/application/message-processor.properties
Например, чтобы открыть файл с помощью vi , введите следующее:
vi /opt/apigee/customer/application/message-processor.properties
- Добавьте в файл свойств строку следующего формата:
conf_http_HTTP.ignore.allow_header.for.405=true
- Сохраните изменения.
- Убедитесь, что файл свойств принадлежит пользователю
apigee, как показано ниже:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Перезапустите обработчик сообщений, как показано ниже:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Если у вас несколько обработчиков сообщений, повторите описанные выше шаги для всех обработчиков сообщений.
Проверка того, что для свойства 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 .
- На машине обработчика сообщений найдите свойство
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
- Если свойство успешно обновлено в обработчике сообщений, то приведенная выше команда должна отобразить значение свойства
HTTP.ignore.allow_header.for.405какtrueв файлеhttp.properties, как показано ниже:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- Если значение свойства
HTTP.ignore.allow_header.for.405по-прежнему отображается какfalse, убедитесь, что вы правильно выполнили все шаги, описанные в разделе «Настройка параметра ignore allow header for 405 property в обработчиках сообщений» (установка значения true) . Если вы пропустили какой-либо шаг, повторите все шаги еще раз. - Если вам по-прежнему не удается изменить свойство
HTTP.ignore.allow_header.for.405, обратитесь в службу поддержки Apigee Edge .
Настройка параметра ignore allow header for 405 property в обработчиках сообщений на значение false.
В этом разделе объясняется, как установить для свойства HTTP.ignore.allow_header.for.405 значение по умолчанию false в обработчике сообщений, используя токен в соответствии с синтаксисом, описанным в разделе «Как настроить Edge» .
- Проверьте, изменено ли значение свойства
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
- Если для обработчика сообщений установлено значение
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
- Если приведенная выше команда показывает, что свойство
HTTP.ignore.allow_header.for.405установлено вfalse(значение по умолчанию), то вам больше ничего не нужно делать. То есть, пропустите следующие шаги. - Если для свойства
HTTP.ignore.allow_header.for.405установленоtrue, выполните следующие действия, чтобы вернуть его к значению по умолчаниюfalse. На компьютере, обрабатывающем сообщения, откройте следующий файл в текстовом редакторе:
/opt/apigee/customer/application/message-processor.properties
Например, чтобы открыть файл с помощью vi , введите следующее:
vi /opt/apigee/customer/application/message-processor.properties
- Удалите следующую строку из файла свойств:
conf_http_HTTP.ignore.allow_header.for.405=true
- Сохраните изменения.
- Убедитесь, что файл свойств принадлежит пользователю
apigee, как показано ниже:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Перезапустите обработчик сообщений, как показано ниже:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Если у вас несколько обработчиков сообщений, повторите описанные выше шаги для всех обработчиков сообщений.
Проверка того, что для свойства 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 .
- На машине обработчика сообщений найдите свойство
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
- Если свойство успешно обновлено в обработчике сообщений, то приведенная выше команда должна отобразить значение свойства
HTTP.ignore.allow_header.for.405какfalseв файлеhttp.properties, как показано ниже:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
- Если значение свойства
HTTP.ignore.allow_header.for.405по-прежнему отображается какtrue, убедитесь, что вы правильно выполнили все шаги, описанные в разделе «Настройка свойства ignore allow header for 405 в обработчиках сообщений на значение false» . Если вы пропустили какой-либо шаг, повторите все шаги заново. - Если вам по-прежнему не удается изменить свойство
HTTP.ignore.allow_header.for.405, обратитесь в службу поддержки Apigee Edge .