ASP.NET MVC:如何在控制器的重定向中植入 session cookie?
ASP.NET MVC: How to plant a session cookie in a redirection from the controller?
我正在尝试从 MVC 控制器内部重定向到不同的外部 URL,只添加一个 session cookie,我可以在重定向后访问它。
我已经检查了数十个 Whosebug 的问题以及更多问题,只发现了旧的或不相关的答案,或者使用了不同的技术。
// GET: api/lem/fst?url=xxx
[HttpGet]
public ActionResult Get([FromQuery]string url)
{
var uri = new UriBuilder(url);
var cookieOptions = new CookieOptions
{
Domain = uri.Host,
};
HttpContext.Response.Cookies.Append("key123", "value123", cookieOptions);
return Redirect(uri.ToString());
}
例如,如果我发送 GET 到 https://.../api/lem/fst?url=www.google.com,
我可以在服务器的 Set-Cookie 响应 header 中看到 cookie。
此外,重定向工作正常,但我在 google.
的请求或响应中的任何地方都看不到 cookie
谢谢!
看看:
您的代码工作正常:如果它是同一个域,那么来自 Get 响应的 cookie 将存储在 cookie 清单中并发送(在请求中)重定向到 url。
用于测试在本地计算机上托管两个单独的 Web 应用程序。例如从 localhost:50324 重定向到 localhost:47232.
我正在尝试从 MVC 控制器内部重定向到不同的外部 URL,只添加一个 session cookie,我可以在重定向后访问它。
我已经检查了数十个 Whosebug 的问题以及更多问题,只发现了旧的或不相关的答案,或者使用了不同的技术。
// GET: api/lem/fst?url=xxx
[HttpGet]
public ActionResult Get([FromQuery]string url)
{
var uri = new UriBuilder(url);
var cookieOptions = new CookieOptions
{
Domain = uri.Host,
};
HttpContext.Response.Cookies.Append("key123", "value123", cookieOptions);
return Redirect(uri.ToString());
}
例如,如果我发送 GET 到 https://.../api/lem/fst?url=www.google.com, 我可以在服务器的 Set-Cookie 响应 header 中看到 cookie。 此外,重定向工作正常,但我在 google.
的请求或响应中的任何地方都看不到 cookie谢谢!
看看:
您的代码工作正常:如果它是同一个域,那么来自 Get 响应的 cookie 将存储在 cookie 清单中并发送(在请求中)重定向到 url。
用于测试在本地计算机上托管两个单独的 Web 应用程序。例如从 localhost:50324 重定向到 localhost:47232.