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

Posted

技术标签:

【中文标题】如何使用转发 URL 执行 302 重定向【英文标题】:How to perform a 302 Redirect with a forwarding URL 【发布时间】:2021-06-27 17:06:02 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

<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

【讨论】:

以上是关于如何使用转发 URL 执行 302 重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HTTP 重定向上转发标头

302 重定向是如何发生的?

如何在 Ktor 内部重定向?

如何在Elastic Load Balancer运行状况检查中获取302重定向的URL?

如何在nginx创建临时重定向和永久重定向

在powershell中使用Invoke-WebRequest重定向URL时如何获取位置标头