加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么HttpContext.Response.Cookies [“foo”]添加

发布时间:2020-12-16 03:21:14 所属栏目:asp.Net 来源:网络整理
导读:由于以下行为,我花了半天时间追踪错误: – 想象一下,在Http请求或响应的cookie集合中没有名为“foo”的cookie.以下代码返回null A) HttpContext.Current.Request.Cookies["foo"] 以下代码创建一个名为“foo”的新cookie(带有path =“/”和空值),将其添加到
由于以下行为,我花了半天时间追踪错误: –

想象一下,在Http请求或响应的cookie集合中没有名为“foo”的cookie.以下代码返回null

A) HttpContext.Current.Request.Cookies["foo"]

以下代码创建一个名为“foo”的新cookie(带有path =“/”和空值),将其添加到响应的cookie集合中并返回

B) HttpContext.Current.Response.Cookies["foo"]

所以(B)的副作用是在客户端的浏览器上覆盖任何预先存在的名为“foo”的cookie.

这不是一个错误.有人故意对此进行编码.这是Get方法的反汇编(Item [string name] indexer委托给这个方法.

public HttpCookie Get(String name) {
        HttpCookie cookie = (HttpCookie)BaseGet(name); 

        if (cookie == null && _response != null) { 
            // response cookies are created on demand 
            cookie = new HttpCookie(name);
            AddCookie(cookie,true); 
            _response.OnCookieAdd(cookie);
        }

        return cookie; 
    }

显然,MSDN文档没有提到这种行为(尽管有些用户在描述此行为的文档底部添加了注释).

我的问题是有人可以向我解释HttpCookieCollection类有这种行为的理由.

解决方法

为什么?猜测,因为它是有道理的.如果您对响应做了任何事情,那么典型的用例就是您希望将内容发送到浏览器.

您检查入站值(Request.Cookies),然后将它们设置为出站(Response.Cookies).请求是READ,响应是WRITE.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读