如何使用转发 URL 执行 302 重定向

问题描述

我们正在使用 Xamarin 和 UITest 为我们的应用程序创建 UI 测试。

我们正在使用 Azure API 管理进行集成,并尝试模拟我们的身份验证过程。 我们正在使用 Xamarin Essentials WebAuthenticator,它会打开外部浏览器以执行两步 OAuth 并加载登录页面

由于 UITest 无法控制应用程序本身之外的任何内容,我们需要通过将 302 重定向返回到控制应用程序来让 API 管理响应,并使用我们模拟的测试身份验证令牌。

我尝试创建一个返回 302 的模拟响应,其中包含一个 Location 标头,其中包含应用程序返回 url 的值。但是,每当我在 APIM 测试页面中对此进行测试时,它只会返回 200 OK。

是否可以向 APIM 发出 GET 请求,APIM 执行 302 重定向到指定的 uri,并带有模拟测试数据的主体?

解决方法

您可以尝试使用退货响应政策。 类似于此示例的内容:

<when condition="@(context.Request.OriginalUrl.Scheme == Uri.UriSchemeHttp)">
            <return-response>
                <set-status code="302" reason="Temporary Redirect" />
                <set-header name="Location" exists-action="override">
                    <value>@{
                    var uri = context.Request.OriginalUrl;

                    return Uri.UriSchemeHttps + "://" + uri.Host + uri.Path + uri.QueryString;
                    }</value>
                </set-header>
            </return-response>
        </when>

供您参考:https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#ReturnResponse

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...