设置后端url后提取它从标头azure apim



嗨,我正试图实现这样一个功能,我需要确保api通过网关,所以已经创建了一个apim,我需要从调用和路由中提取头到该调用:到目前为止,我已经完成了这个策略:

<policies>
<inbound>
<set-variable name="host" value="@(context.Request.Headers.GetValueOrDefault("uri","http://google.com/"))" />
<set-backend-service base-url="${{ variables.host}}" />
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>

但是它给出了错误:

Error in element 'set-backend-service' on line 16, column 4: Value is not a valid absolute URL.

第16行第4列'set-backend-service'元素错误:Value不是一个有效的绝对URL。

这可能意味着您的uri头的值不包括https://.有效的绝对URL包含定位资源所需的所有信息,包括协议(HTTPS)。

也可以直接在set-backend-service中设置,不需要先使用set-variable。如:

<set-backend-service base-url="@(context.Request.Headers.GetValueOrDefault("header-name","optional-default-value"))" />

<set-backend-service base-url="@((string)context.Variables["host"])" />

最新更新