ASP.NET MVC cookie duplicate -
when add cookie in response, request getting 2 duplicate cookies. here code:
httpcookie cookie = request.cookies[constants.cart_cookie_key]; // 1 "cart" coookie received client browser. if (cookie != null) { request.cookies.remove(constants.cart_cookie_key); //remove it. there no cookie in request cookie.expires = datetime.now.addyears(2); cookie.value = "test"; //response empty until response.cookies.set(cookie); // add response, there 2 "cart" cookies in request. wtf? }
it's important me have harmonized values, because still have use value request in remaining process. when add modified value response, request getting horrible mess.
you removing cookie request , adding new 1 response knows in state of request...
may suggest use owinmiddleware
modifying response cookies since you're using compatible stack anyway?
it's pretty easy plug correct phase of request.
public class cartcookiemiddleware : owinmiddleware { public cartcookiemiddleware(owinmiddleware next) : base(next) { } /// <summary> /// process individual request. /// </summary> /// <param name="context"/> /// <returns/> public override async task invoke(iowincontext context) { // register event when response headers sent context.response.onsendingheaders(state => { // response state var resp = (iowinresponse)state; // request state var req = resp.context.request; var cookie = req.cookies.firstordefault(c => c.key.equals(constants.cart_cookie_key, stringcomparison.ordinalignorecase)).value; if (cookie != null) { resp.cookies.delete(constants.cart_cookie_key); } else { cookie = "test"; } resp.cookies.append(constants.cart_cookie_key, cookie, new cookieoptions { httponly = true, secure = req.issecure }); }, context.response); await next.invoke(context); } }
Comments
Post a Comment