嗨,我正试图实现这样一个功能,我需要确保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"])" />