【问题标题】:Passing Parameters on Response.Redirect without QueryStrings在没有 QueryStrings 的 Response.Redirect 上传递参数
【发布时间】:2018-10-16 19:28:51
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

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

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

重要的是要明确(只是因为您引用了听起来像安全问题的东西)-这绝不比在重定向本身中传递参数更安全-这只是您所要求的解决方案。不要使用此方法传递您不想暴露的信息。

相关 -

Share cookie between subdomain and domain

ASP.NET Cookies Overview

【讨论】:

    【解决方案2】:

    有几个选项 1)如果您不能使用查询字符串,您可以将值写入表单和 POST(而不是 GET)。在其上放置一个 javascript 以自动发布。因此,用户登录经典 ASP,它将值写入下一页上的表单,然后自动提交该表单。这仍然不是超级安全,因为可以读取表单字段 2)为了更安全,你可以散列或加密表单中的值,如果你走这条路,你可以加密所有字段,然后通过查询字符串传递

    我们以前遇到过这种情况,主系统是经典的 ASP,系统的一个新部分是 MVC ASP.NET。我们在 ASP 端使用了一个加密组件 (ASPEncrypt),并在 ASP.NET 中内置了解密功能,以让用户在系统之间安全地传输,同时跟踪谁登录了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      相关资源
      最近更新 更多