在没有QueryStrings的Response.Redirect上传递参数

时间:2018-10-16 19:28:52

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

重要的是要弄清楚(只是因为您引用了听起来像是安全问题的内容)-这绝对比在重定向本身中传递参数更安全-但这只是您所要求的解决方案。不要使用此方法来传递您不想公开的信息。

相关-

Share cookie between subdomain and domain

ASP.NET Cookies Overview

答案 1 :(得分:1)

有一些选择 1)如果不能使用查询字符串,则可以将值写入表单和POST(而不是GET)中。在上面放一个JavaScript以自动发布。因此,用户登录经典ASP,它将值写入下一页的表单中,然后自动提交该表单。这仍然不是超级安全,因为可以读取表单字段 2)为了提高安全性,您可以对表单中的值进行哈希处理或加密,如果要使用此路由,则可以对所有字段进行加密,然后通过查询字符串进行传递

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