为消息处理器中的 405 属性配置忽略忽略标头

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

<ph type="x-smartling-placeholder">

在客户端-服务器通信中,如果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

例如,如果您的后端服务器允许 GETPOSTHEAD 方法,您需要确保 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">

准备工作

在使用本文档中的步骤之前,请确保您了解以下主题:

在消息处理器上将 405 属性的 ignore allow 标头配置为 true

在 Apigee Edge 中,属性 HTTP.ignore.allow_header.for.405 设置为 默认设置为 false。这样一来,Apigee Edge 便可将错误代码为 protocol.http.Response405WithoutAllowHeader502 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.405true 消息处理器,根据 <ph type="x-smartling-placeholder"></ph> 如何配置 Edge

<ph type="x-smartling-placeholder">
  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. 如果您有多个消息处理器,请对所有消息重复上述步骤 处理器。

验证消息处理器上的 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

  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,然后验证您是否遵循了 将 405 属性的 ignore allow 标头配置为 true 消息处理器。如果您遗漏了任何步骤,请重复所有步骤 正确。
  4. 如果您仍无法修改媒体资源 HTTP.ignore.allow_header.for.405,然后联系 Apigee Edge 支持团队

在消息处理器上将 405 属性的 ignore allow 标头配置为 false

本部分介绍了如何配置媒体资源 将 HTTP.ignore.allow_header.for.405 更改为其默认值 false 在消息处理器中根据 API 文档中的说明使用令牌, 如何配置 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. 如果您有多个消息处理器,请对所有消息重复上述步骤 处理器。

验证消息处理器上的 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

  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,请验证您是否遵循了 <ph type="x-smartling-placeholder"></ph> 在消息处理器上将 405 属性的 ignore allow 标头配置为 false 正确。如果您遗漏了任何步骤,请再次正确地重复所有步骤。
  4. 如果您仍无法修改媒体资源 HTTP.ignore.allow_header.for.405,然后联系 Apigee Edge 支持团队