如何防止Set header策略在入站后执行



我正在构建一个Azure Function应用程序,该应用程序将通过Azure API管理公开。在API管理重定向之前,我们需要知道URL的路径。我们目前正在通过使用入站策略在标头中设置原始URL来实现这一点,如下所示:

<policies>
<inbound>
<base />
<set-backend-service id="apim-generated-policy" backend-id="myfunctionapp" />
<set-header name="x-original-url" exists-action="append">
<value>@(context.Request.OriginalUrl.Path.ToString())</value>
</set-header>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>

在API管理中测试API时,我可以看到头部设置正确,但在我的函数应用程序的日志中,头部值被重定向后的请求URL覆盖(即/API/endpoint而不是/API-manager/endpoint(。

我猜这个政策在交给功能应用程序后会再次执行,但我似乎不明白为什么。有没有人有这样做的经验,或者有更好的解决方案将原始URL发送到功能应用程序,以便进行记录?

Justin Matthew有权这样做。将标题名称更改为其他名称解决了这个问题。管道中的其他东西一定试图利用相同的头值。

最新更新