我真的只是想知道这是否可能。所以我们正在重做我们的网站,从经典 ASP 到 ASP.NET MVC。但是,我们目前一次只做一点点。我们将其拆分为三个新的 ASP.NET MVC 项目,每个项目都有自己的域。我遇到的问题是我们想在一个页面上登录(目前是现有的经典 ASP),然后将它们重定向到新域,同时传递诸如 SessionID 之类的东西。
我通过在他们登录时将信息存储在数据库中然后通过 QueryStrings 发送它来让它正常工作。问题是经理希望我不要使用 QueryStrings,因为可能会向那里发送信息(如 UserId)。所以他建议通过标题发送它。这通过使用 GET
请求并在 header 中添加信息来实现。据我所知,我无法通过 GET
重定向。我认为通过 POST
重定向也行不通。
有没有办法在传递不需要 QueryString 的信息时从一个域重定向到另一个域?如果您需要更多信息,请告诉我。
最佳答案
您不能直接指示用户的浏览器在获取第二个网站时发送 header 。基本上你只是给它一个地址,它会自己获取页面。
如果两个站点具有相同的顶级域(即 website1.example.com
和 website2.example.com
),这可能是可能的,这听起来可能是您可以只使用存储在基本域 (*.example.com
) 上的 cookie。所以流程将是 -
- 用户登录,您返回带有
Set-Cookie
header 和Location
header 的响应(这是重定向)。 - 用户的浏览器存储您要求它存储在其 cookie 存储区中的值。
- 用户的浏览器向您重定向到的网站发出请求。因为您在基本域级别设置了 cookie,它将被发送到任何
*.example.com
,基本上意味着第二个站点将获得一个 header (Cookie
)来自第一个站点的信息。 - 在第二个站点中,读取 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.
相关 -
关于c# - 在没有 QueryStrings 的情况下在 Response.Redirect 上传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52842765/