c# - 在没有 QueryStrings 的情况下在 Response.Redirect 上传递参数

标签 c# asp.net-mvc vbscript asp-classic

我真的只是想知道这是否可能。所以我们正在重做我们的网站,从经典 ASP 到 ASP.NET MVC。但是,我们目前一次只做一点点。我们将其拆分为三个新的 ASP.NET MVC 项目,每个项目都有自己的域。我遇到的问题是我们想在一个页面上登录(目前是现有的经典 ASP),然后将它们重定向到新域,同时传递诸如 SessionID 之类的东西。

我通过在他们登录时将信息存储在数据库中然后通过 QueryStrings 发送它来让它正常工作。问题是经理希望我不要使用 QueryStrings,因为可能会向那里发送信息(如 UserId)。所以他建议通过标题发送它。这通过使用 GET 请求并在 header 中添加信息来实现。据我所知,我无法通过 GET 重定向。我认为通过 POST 重定向也行不通。

有没有办法在传递不需要 QueryString 的信息时从一个域重定向到另一个域?如果您需要更多信息,请告诉我。

最佳答案

您不能直接指示用户的浏览器在获取第二个网站时发送 header 。基本上你只是给它一个地址,它会自己获取页面。 如果两个站点具有相同的顶级域(即 website1.example.comwebsite2.example.com),这可能是可能的,这听起来可能是您可以只使用存储在基本域 (*.example.com) 上的 cookie。所以流程将是 -

  1. 用户登录,您返回带有 Set-Cookie header 和 Location header 的响应(这是重定向)。
  2. 用户的浏览器存储您要求它存储在其 cookie 存储区中的值。
  3. 用户的浏览器向您重定向到的网站发出请求。因为您在基本域级别设置了 cookie,它将被发送到任何 *.example.com,基本上意味着第二个站点将获得一个 header (Cookie)来自第一个站点的信息。
  4. 在第二个站点中,读取 cookie,并执行您需要的任何逻辑。

Important to make clear (just because you referenced something that sounded like a security concern) - this is by no means safer than passing the parameter in the redirect itself - it's just a solution for what you asked. Don't use this method to pass information that you don't want exposed.

相关 -

Share cookie between subdomain and domain

ASP.NET Cookies Overview

关于c# - 在没有 QueryStrings 的情况下在 Response.Redirect 上传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52842765/

相关文章:

asp-classic - 基于ASP的网站和表单的错误处理

VBScript 获取临时文件夹

c# - 数据库中的选项而不是 O 或 null

c# - SQL 插入导致空字段

c# - 我真的锁定了这些东西吗

c# - MVC Seed 不将数据放入数据库

c# - 有没有一种方法可以根据特定规则自动重新发送 Outlook 2007 和 MS Exchange 的电子邮件?

asp.net - 构建没有 session 状态的ASP.NET应用程序?

使用 FileStreamResult 作为返回值的 jQuery post

sql-server-2008 - 如何在旧的 ASP/VBScript 应用程序中使用 SQL Server 2008 存储过程的 Varchar(max) 输出?