Вы просматриваете документацию по 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.
Подготовка
Прежде чем выполнять описанные в этом документе действия, убедитесь, что вы понимаете следующие темы:
- Прочитайте презентацию 502 Bad Gateway - response 405 without Allow header (Ошибка 502: ошибка шлюза – ответ 405 без заголовка Allow).
- Если вы не знаете, как настраивать ресурсы для Edge в частном облаке, прочитайте статью Как настроить Edge.
Настройка игнорирования заголовка 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.
-
На компьютере Message Processor откройте в редакторе следующий файл: Если его ещё нет, создайте его.
/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
- Перезапустите Message Processor, как показано ниже.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Если у вас несколько процессоров сообщений, повторите описанные выше действия для каждого из них.
Проверка того, что для свойства 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.
- На компьютере 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
- Если свойство успешно обновлено в 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
- Если вы по-прежнему видите значение для свойства
HTTP.ignore.allow_header.for.405какfalse, проверьте, правильно ли вы выполнили все шаги, описанные в разделе Настройка игнорирования заголовка Allow для свойства 405 на значение true в обработчиках сообщений. Если вы пропустили какой-либо шаг, повторите все действия заново. - Если вам по-прежнему не удается изменить свойство
HTTP.ignore.allow_header.for.405, обратитесь в службу поддержки Apigee Edge.
Настройка игнорирования заголовка Allow для свойства 405 на процессорах сообщений
В этом разделе рассказывается, как настроить свойство HTTP.ignore.allow_header.for.405 на значение по умолчанию false
в Message Processor, используя токен в соответствии с синтаксисом, описанным в статье Как настроить 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.propertiesкоманда выше должна показать значение свойстваHTTP.ignore.allow_header.for.405какtrue, как показано ниже:/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. На компьютере Message Processor откройте в редакторе следующий файл:
/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
- Перезапустите Message Processor, как показано ниже.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Если у вас несколько процессоров сообщений, повторите описанные выше действия для каждого из них.
Проверка того, что для свойства 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.
- На компьютере 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
- Если свойство успешно обновлено в 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
- Если вы по-прежнему видите значение свойства
HTTP.ignore.allow_header.for.405какtrue, убедитесь, что вы правильно выполнили все шаги, описанные в разделе Настройка игнорирования заголовка "Разрешить" для свойства 405 на процессорах сообщений. Если вы пропустили какой-либо шаг, повторите все действия заново. - Если вам по-прежнему не удается изменить свойство
HTTP.ignore.allow_header.for.405, обратитесь в службу поддержки Apigee Edge.