使用 Azure API 管理 pass-through 但返回 html 显示重定向

Use Azure API Management for pass-through but returning html showing redirecting

我尝试将我们 api 管理的后端从资源修改为 webapp api。 我参考了

暴露的api是: https://service-api-management.azure-api.net/api-name/operation-name

我想打电话的实际 api 是: https://service-name.azurewebsites.net/api/Skills/Async/operation-name

除了 uri 之外,请求 body 和 header 应该保持不变。所以我设置了以下策略来更改 uri。但响应是 html 显示重定向。

好奇为什么 returns html 显示重定向以及如何使重定向正常工作。如有任何意见,我们将不胜感激。

政策:

<policies>
    <inbound>
        <base />
        <set-backend-service base-url="https://service-name.azurewebsites.net" />
        <rewrite-uri template="@(context.Request.Url.Path.Replace("/operation-name","/api/Skills/Async/operation-name"))" />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

回复:

<!-- Copyright (C) Microsoft Corporation. All rights reserved. -->
<!DOCTYPE html>
<html>
    <head>
        <title>Redirecting</title>
      ......

测试并查看您的后端服务 returns 对 Postman 或 Fiddler 等工具的支持,这些工具最好模拟浏览器不发送的常规 HTTP 请求。也许后端期望隐式发送的请求中有一些 header ,或者重定向可能非常快并且不会被用户注意到。要使其通过 APIM 工作,您必须注意不要触发重定向或使其再次重定向到 APIM。在某种程度上 redirect-content-urls 政策可能在这里有用:https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#MaskURLSContent