我尝试了很多不同的方法将cookie添加到HttpContext.Current.Response
但没有运气。浏览器看不到我要添加的cookie。请帮忙!
这是我的API控制器
public IHttpActionResult Get(string username, string password)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "*");
//This does not work
HttpCookie cookie = new HttpCookie("ACA-Cookie", "This better work!");
cookie.Expires = DateTime.Now.AddDays(2);
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
HttpContext.Current.Response.SetCookie(cookie);
//This does not work
var cookie = new HttpCookie("MyCookie", DateTime.Now.ToLongTimeString());
HttpContext.Current.Response.Cookies.Add(cookie);
return Ok(HttpStatusCode.OK);
}
答案 0 :(得分:0)
请记住,WebAPI基于REST(无状态),而cookie是维护状态的一种方式。这两个概念确实相互矛盾。如果您想使用cookie,您可以考虑使用ASP.net MVC,因为您仍然可以在更适合州的框架中返回序列化数据。
答案 1 :(得分:0)
在我的场景中,我使用Angular JS和Web API。但是,我使用ASP.Net MVC登录来验证用户。
基本上,用户登录ASP.Net MVC页面,该页面使用 ASP.Net Identity 。身份验证成功后,我将重定向到MVC SPA (单页应用程序);每次请求Web API时,它都会维护Authenticated Cookie。
如果您想在没有MVC的情况下使用纯Web API调用,我建议您查看基于令牌的授权,这比从Web API响应cookie要容易得多。