对传递使用Azure API管理,但返回显示重定向的html

对传递使用Azure API管理,但返回显示重定向的html,azure,redirect,azure-api-management,api-management,Azure,Redirect,Azure Api Management,Api Management,我尝试将api管理的后端从resource修改为webapp api。 我已将其作为推荐人 公开的api是: 我要调用的实际api是: 除了uri之外,请求主体和头应该保持不变。因此,我设置了以下策略来更改uri。但是响应是一个显示重定向的html 奇怪的是,为什么它返回一个显示重定向的html,以及如何使重定向正常工作。如有任何意见,将不胜感激 政策: 答复: 重定向 ...... 测试并查看后端服务返回给Postman或Fiddler之类的工具的内容,这些工具最好模拟非由浏览器发

我尝试将api管理的后端从resource修改为webapp api。 我已将其作为推荐人

公开的api是:

我要调用的实际api是:

除了uri之外,请求主体和头应该保持不变。因此,我设置了以下策略来更改uri。但是响应是一个显示重定向的html

奇怪的是,为什么它返回一个显示重定向的html,以及如何使重定向正常工作。如有任何意见,将不胜感激

政策:


答复:


重定向
......

测试并查看后端服务返回给Postman或Fiddler之类的工具的内容,这些工具最好模拟非由浏览器发送的常规HTTP请求。也许后端需要隐式发送请求中的某个头,或者重定向速度非常快,用户无法察觉。要使它通过APIM工作,您必须注意不要触发重定向或使它再次重定向到APIM。在某种程度上,重定向内容URL策略在这里可能有用:

Update:最终发现API级别中有一个策略,可以删除标头中的授权令牌,因此当后端转发请求时,没有令牌,这就是为什么它会重定向到登录页面。感谢Vitaliy,我使用了APIM门户中的跟踪,并找到了意外删除了原始授权标头。所以把它加回去,它就可以工作了。
<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>
      ......