You're viewing Apigee Edge documentation.
Go to the
Apigee X documentation. info
In the client-server communication, a server responds back with HTTP status code 405
Method Not Allowed
if the
HTTP request method presented by the client is known to the server
but is not supported by the target resource. Similarly in Apigee Edge, the backend server can
respond back with the HTTP status code 405 Method Not Allowed.
Apigee Edge expects the backend server to send 405 Method Not Allowed
responses
with the list of allowed methods in the Allow
header, as per specification
RFC 7231, section 6.5.5: 405 Method Not Allowed.
The Allow
header must be sent in the following format:
Allow: HTTP_METHODS
For example, if your backend server allows GET
, POST
and
HEAD
methods, you need to ensure that the Allow
header contains them
as follows:
Allow: GET, POST, HEAD
If the backend server does not send the Allow
header with the HTTP status code
405 Method Not Allowed,
then Apigee returns HTTP status code 502 Bad
Gateway
with error code protocol.http.Response405WithoutAllowHeader
to the
client application. The recommended solution to address this error is
to fix the backend server to adhere to the specification
RFC 7231, section 6.5.5: 405 Method Not Allowed or use the fault handling to
respond back with HTTP status code 405 Method Not Allowed
including the
Allow
header as explained in the troubleshooting playbook
502 Bad Gateway - Response 405 without Allow header.
However, in some exceptional cases, it may not be possible to fix your backend or modify your API Proxy to address this issue immediately.
In such cases, you can set the ignore allow header for the 405
property
HTTP.ignore.allow_header.for.405
at the
Message Processor level temporarily. Setting this property to true
prevents Apigee
from returning the 502 Bad Gateway
response to client applications even if the
backend server sends HTTP status code 405 Method Not Allowed
without the
Allow
header.
Once you are in a position to fix your backend server to send HTTP status code 405 Method
Not Allowed
with the Allow
header, you can revert the property
HTTP.ignore.allow_header.for.405
to its default value false
.
Before you begin
Before you use the steps in this document, be sure you understand the following topics:
- Read the Playbook - 502 Bad Gateway - response 405 without Allow header.
- If you aren’t familiar with configuring properties for Edge on Private Cloud, read How to configure Edge.
Configuring ignore allow header for 405 property to true on Message Processors
In Apigee Edge, the property HTTP.ignore.allow_header.for.405
is set to
false
, by default. This enables Apigee Edge to return the 502 Bad
Gateway
with error code protocol.http.Response405WithoutAllowHeader
to the
client applications if the backend server sends HTTP status code 405 Method Not
Allowed
without the Allow
header. If you want to prevent Apigee Edge from
sending 502 Bad Gateway
to client applications, then you need to set the value of
the property HTTP.ignore.allow_header.for.405
to true
on the Message
Processors.
This section explains how to configure the property
HTTP.ignore.allow_header.for.405
to true
on the
Message Processors, using the token as per the syntax described in
How to configure Edge.
-
On the Message Processor machine, open the following file in an editor. If it does not already exist, then create it.
/opt/apigee/customer/application/message-processor.properties
For example, to open the file using vi, enter the following:
vi /opt/apigee/customer/application/message-processor.properties
- Add a line in the following format to the properties file:
conf_http_HTTP.ignore.allow_header.for.405=true
- Save your changes.
- Ensure the properties file is owned by the
apigee
user as shown below:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Restart the Message Processor as shown below:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- If you have more than one Message Processor, repeat the above steps on all the Message Processors.
Verifying ignore allow header for 405 property is set to true on Message Processors
This section explains how to verify that the property
HTTP.ignore.allow_header.for.405
has been successfully updated to true
on the Message Processors.
Even though you use the token conf_http_HTTP.ignore.allow_header.for.405
to update
the value of the property on the Message Processor, you need to verify if the actual property
HTTP.ignore.allow_header.for.405
has been set to true
.
- On the Message Processor machine, search for the property
HTTP.ignore.allow_header.for.405
in the/opt/apigee/edge-message-processor/conf
directory and check to see if it has been set totrue
as shown below:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- If the property is successfully updated on the Message Processor, then the above command
should show the value of the property
HTTP.ignore.allow_header.for.405
astrue
in thehttp.properties
file as shown below:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- If you still see the value for the property
HTTP.ignore.allow_header.for.405
asfalse
then verify that you have followed all the steps outlined in Configuring ignore allow header for 405 property to true in Message Processors correctly. If you have missed any step, repeat all the steps again correctly. - If you are still not able to modify the property
HTTP.ignore.allow_header.for.405
, then contact Apigee Edge Support.
Configuring ignore allow header for 405 property to false on Message Processors
This section explains how to configure the property
HTTP.ignore.allow_header.for.405
to its default value false
on the Message Processor, using the token as per the syntax described in
How to configure Edge.
- Verify if the property
HTTP.ignore.allow_header.for.405
is modified totrue
. You can do this by searching for this property in the/opt/apigee/edge-message-processor/conf
directory and checking its value using the following command:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- If the property is set to
true
on the Message Processor, then the above command should show the value of the propertyHTTP.ignore.allow_header.for.405
astrue
in thehttp.properties
file as shown below:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- If the above command shows that the property
HTTP.ignore.allow_header.for.405
is set tofalse
(default value), then you don’t have to do anything else. That is, skip the following steps. - If the property
HTTP.ignore.allow_header.for.405
is set totrue
, then perform the following steps to revert to its default valuefalse
. On the Message Processor machine, open the following file in an editor:
/opt/apigee/customer/application/message-processor.properties
For example, to open the file using vi, enter the following:
vi /opt/apigee/customer/application/message-processor.properties
- Remove the following line from the properties file:
conf_http_HTTP.ignore.allow_header.for.405=true
- Save your changes.
- Ensure the properties file is owned by the
apigee
user as shown below:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Restart the Message Processor as shown below:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- If you have more than one Message Processor, repeat the above steps on all the Message Processors.
Verifying ignore allow header for 405 property is set to false on Message Processors
This section explains how to verify that the property
HTTP.ignore.allow_header.for.405
has been successfully updated to false
on the Message Processors.
Even though you use the token
conf_http_HTTP.ignore.allow_header.for.405
to update the value on the Message
Processor, you need to verify if the actual property HTTP.ignore.allow_header.for.405
has been set to false
.
- On the Message Processor machine, search for the property
HTTP.ignore.allow_header.for.405
in the/opt/apigee/edge-message- processor/conf
directory and check to see if it has been set tofalse
as shown below:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- If the property is successfully updated on the Message Processor, then the above command
should show the value of the property
HTTP.ignore.allow_header.for.405
asfalse
in thehttp.properties
file as shown below:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
- If you still see the value for the property
HTTP.ignore.allow_header.for.405
astrue
, then verify that you have followed all the steps outlined in Configuring ignore allow header for 405 property to false on Message Processors correctly. If you have missed any step, repeat all the steps again correctly. - If you are still not able to modify the property
HTTP.ignore.allow_header.for.405
, then contact Apigee Edge Support.