使用请求信息重定向

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

这是基础知识...我有 3 个网站(相同的 IIS 服务器 - 但所有网站都不同)...Public(即 .net 5),这只是一个带有信息页面的静态网站。 我有 OldProvider,这是一个旧的 asp 经典站点,以及 NewProvider,这是(当前)重写的 OldProvider 站点(在 .Net 8 中)。

Public 有一个登录页面(用于访问 OldProvider),实际上只是转发到 OldProvider 站点 login.asp 页面。 这是Public

登录页面上的表单调用
<form action="@Configuration["PortalUrl"]/Login.asp" method="POST">

这一切都工作得很好。 用户名和密码被重定向到 OldProvider 上的 login.asp 页面,并且 OldProvider 处理登录并执行其应该执行的操作...一切都很好...

现在我们有了NewProvider。 我们目前仅分阶段将用户引入,因此我们在 NewProvider 上进行了设置,当他们登录时,它会查看他们是否应该留在 NewProvider 或重定向到 OldProvider

因为我必须实际检查 NewProvider 并查看我应该对用户做什么,如果他们应该转到 OldProvider

,则后面的代码在 Controller.cs 文件中包含此内容
return Redirect($"{_config["PortalURL"]}/Login.asp");

现在...这本身就可以工作,它会将我带到 OldProvider 中的 login.asp 文件,但它不会在重定向中转发请求数据(用户名和密码)。

如何将用户名和密码发送到重定向中,以便经典的 asp 页面可以读取该信息并进行处理。

我已经验证,就读取请求而言,我在 PublicOldProvider 上使用相同的用户名和密码 ID/名称...

asp.net-mvc .net-8.0
1个回答
0
投票

在这种情况下,它可能有助于了解 HTTP 和浏览器的工作原理。 Redirect 方法将

302 Found
状态代码返回给浏览器,这可能会将
POST
更改为
GET
,从而丢失已发布表单中的信息。

“由于历史原因,用户代理可能会将后续请求的请求方法从 POST 更改为 GET。如果不希望出现此行为,可以改用 307(临时重定向)状态代码。”

- HTTP 语义,R. Fielding(编辑),2022 年

正如规范所建议的,您可以尝试使用

307 (Temporary Redirect)
。以下是有关如何使用 ASP.NET 执行此操作的讨论:Return 307 Temporary Redirect in ASP.NET MVC

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