如何在 Azure API 管理中的每个请求后关闭 SSL 连接

Posted

技术标签:

【中文标题】如何在 Azure API 管理中的每个请求后关闭 SSL 连接【英文标题】:How to close the SSL connection after each request in Azure API Management 【发布时间】:2020-04-14 15:05:50 【问题描述】:

我想在 Azure API 管理中的每个请求后关闭 Azure API 管理和后端之间的 SSL 连接(因为一些奇怪的防火墙设置)。

我已尝试设置 HTTP 标头策略

<set-header name="Connection" exists-action="override">
  <value>close</value>
</set-header>

但在保存时,我收到以下错误消息

一个或多个字段包含不正确的值:

第 30 行第 10 列的元素“set-header”出错:标题名称无效或限制修改。

根据 Mozilla,“连接”HTTP 标头是 Forbidden header name

禁止的标头名称是不能以编程方式修改的任何 HTTP 标头的名称;具体来说,是 HTTP 请求标头名称(与 Forbidden 响应标头名称相反)。

使用 Postman,我可以设置“连接”HTTP 标头并发送我的请求。

如何让 Azure API 管理在每次请求后关闭 SSL 连接?

【问题讨论】:

为什么使用 SSL ?我认为您需要请求后端团队在他们的服务上实施 TLS 1.2 加密 对不起,我的错。当然,我的意思是 TLS 1.2。所以这不适用于 HTTP(使用 TLS 1.2) 【参考方案1】:

这是不可能的。 APIM 中的后端连接被重用,因此当您决定关闭它时,它可能已经用于发送另一个并行的请求。有一种方法可以安全地回收后端连接,但不能基于每个请求完成:https://docs.microsoft.com/en-us/rest/api/apimanagement/2019-12-01/backend/reconnect

另一种方法是让您的后端使用 HTTP 1.0 进行响应。 HTTP 1.0 意味着非持久连接。

【讨论】:

如果后端发送connection:close响应头,APIM会不会尊重它? 哦,是的。最初的问题暗示是否可以在 APIM 本身进行。

以上是关于如何在 Azure API 管理中的每个请求后关闭 SSL 连接的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Azure API 管理为 API 中的每个方法设置 405 Method Not Allowed

如何将请求中的值复制到 Azure API 管理策略中的响应中

如何阻止 Azure APIM 中的恶意请求反复达到速率或配额限制?

Azure API 管理 - 如何刷新访问令牌后端 API?

如何在 Azure 中的密钥轮换后为存储 Blob 的客户端请求提供服务

当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?