<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
在客户端-服务器通信中,如果405
Method Not Allowed
<ph type="x-smartling-placeholder"></ph>
客户端提供的 HTTP 请求方法对服务器而言是已知的
但不受目标资源支持。同样,在 Apigee Edge 中
使用 HTTP 状态代码 405 Method Not Allowed.
进行响应
Apigee Edge 希望后端服务器发送 405 Method Not Allowed
响应
并将根据规范包含在 Allow
标头中允许的方法列表
<ph type="x-smartling-placeholder"></ph>
RFC 7231,第 6.5.5 节:405 Method Not Allowed。
Allow
标头必须采用以下格式发送:
Allow: HTTP_METHODS
例如,如果您的后端服务器允许 GET
、POST
和
HEAD
方法,您需要确保 Allow
标头包含这些方法
如下所示:
Allow: GET, POST, HEAD
如果后端服务器未发送包含 HTTP 状态代码的 Allow
标头
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 代理,以立即解决此问题。
在这种情况下,您可以为 405
属性设置 ignore allow 标头
HTTP.ignore.allow_header.for.405
在
暂时使用消息处理器级别。将此属性设置为 true
可防止 Apigee
将 502 Bad Gateway
响应返回给客户端应用,即使
后端服务器将发送 HTTP 状态代码 405 Method Not Allowed
,而不发送
Allow
标头。
当您能够修复后端服务器,使其发送带有 Allow
标头的 HTTP 状态代码 405 Method
Not Allowed
后,就可以还原该属性
将 HTTP.ignore.allow_header.for.405
更改为其默认值 false
。
准备工作
在使用本文档中的步骤之前,请确保您了解以下主题:
- 阅读手册 - <ph type="x-smartling-placeholder"></ph> 502 Bad Gateway - 响应 405 无 allow 标头。
- 如果您不熟悉如何为私有云上的 Edge 配置属性,请参阅 如何配置 Edge。
在消息处理器上将 405 属性的 ignore allow 标头配置为 true
在 Apigee Edge 中,属性 HTTP.ignore.allow_header.for.405
设置为
默认设置为 false
。这样一来,Apigee Edge 便可将错误代码为 protocol.http.Response405WithoutAllowHeader
的 502 Bad
Gateway
返回到
客户端应用(如果后端服务器发送的 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
消息处理器,根据
<ph type="x-smartling-placeholder"></ph>
如何配置 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
- 如果您有多个消息处理器,请对所有消息重复上述步骤 处理器。
验证消息处理器上的 405 属性的忽略 allow 标头是否设置为 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
,然后验证您是否遵循了 将 405 属性的 ignore allow 标头配置为 true 消息处理器。如果您遗漏了任何步骤,请重复所有步骤 正确。 - 如果您仍无法修改媒体资源
HTTP.ignore.allow_header.for.405
,然后联系 Apigee Edge 支持团队。
在消息处理器上将 405 属性的 ignore allow 标头配置为 false
本部分介绍了如何配置媒体资源
将 HTTP.ignore.allow_header.for.405
更改为其默认值 false
在消息处理器中根据 API 文档中的说明使用令牌,
如何配置 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
- 如果您有多个消息处理器,请对所有消息重复上述步骤 处理器。
验证消息处理器上的 405 属性的忽略 allow 标头是否设置为 false
本部分介绍了如何验证
“HTTP.ignore.allow_header.for.405
”已成功更新为“false
”
对消息处理器的要求
即使您使用了
conf_http_HTTP.ignore.allow_header.for.405
,用于更新 Message 的值
处理方,您需要验证实际资源是否 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
,请验证您是否遵循了 <ph type="x-smartling-placeholder"></ph> 在消息处理器上将 405 属性的 ignore allow 标头配置为 false 正确。如果您遗漏了任何步骤,请再次正确地重复所有步骤。 - 如果您仍无法修改媒体资源
HTTP.ignore.allow_header.for.405
,然后联系 Apigee Edge 支持团队。