Api 管理测试控制台失败,我的入站策略是否有问题?

问题描述 投票:0回答:1

我目前正在尝试使用 Api 管理将调用重定向到特定端点,以便当有人访问我的端点时

https://ApiManagementResource.azure-api.net/auth/ParseState?state=Splited%7cState
它会被重定向到其他地方(其他地方将位于状态查询字符串中)

当我使用 Google Chrome 浏览器测试端点时,它可以正常工作,但每当我尝试从 Azure 提供的测试控制台测试它时,它都无法执行任务(它甚至没有开始运行)。

这些是我目前的入境政策

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Request.Url.Query.ContainsKey(&quot;state&quot;))">
                <return-response>
                    <set-status code="301" reason="Redirected" />
                    <set-header name="Location" exists-action="override">
                        <value>https://Google.com.ar</value>
                    </set-header>
                </return-response>
            </when>
            <otherwise>
                <return-response>
                    <set-status code="400" reason="Bad Request" />
                    <set-body>Missing or invalid state parameter on Parse State.</set-body>
                </return-response>
            </otherwise>
        </choose>
    </inbound>
    <!-- Control if and how the requests are forwarded to services  -->
    <backend>
        <base />
    </backend>
    <!-- Customize the responses -->
    <outbound>
        <base />
    </outbound>
    <!-- Handle exceptions and customize error responses  -->
    <on-error>
        <base />
    </on-error>
</policies>

我暂时嘲笑了重定向以避免出现问题,因为这一直失败。

从 Azure Devops 站点进行测试时,如果我传递

state
查询参数,它总是无法执行。如果没有,那么我会收到 400 响应(如预期)。

如果我从入站策略中删除以下内容

<set-header name="Location" exists-action="override">
   <value>https://Google.com.ar</value>
</set-header>

然后我可以测试它完美地通过

state
查询字符串参数(但当然,它不会将我重定向到任何地方)。

失败时出现的错误是以下弹出窗口

Failed to execute

我不认为我做错了什么,因为它可以在浏览器中运行,但这是我第一次使用 Api 管理,所以也许我是错的

有什么帮助吗?

azure azure-api-management
1个回答
0
投票

APIM 测试控制台似乎不支持自动重定向。我相信,发生这种情况是因为测试控制台在测试过程中不处理重定向,这与浏览器和邮递员不同。

如果您将状态代码更改为 300 或 304,您将能够使用 APIM 实例提供的测试控制台,但它只会返回响应。

我已将政策更改为如下所示-

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Request.Url.Query.ContainsKey(&quot;state&quot;))">
                <return-response>
                    <set-status code="300" reason="Redirected" />
                    <set-header name="Location" exists-action="override">
                        <value>https://Google.com.ar</value>
                    </set-header>
                </return-response>
            </when>
            <otherwise>
                <return-response>
                    <set-status code="400" reason="Bad Request" />
                    <set-body>Missing or invalid state parameter on Parse State.</set-body>
                </return-response>
            </otherwise>
        </choose>
    </inbound>
</policies>

enter image description here

如果您希望重定向按预期工作,建议使用邮递员或浏览器进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.