相关疑难解决方法(0)

现代浏览器中当前的cookie限制是多少?

从2011年开始,现代浏览器的通用cookie限制是什么?我特别感兴趣的是:

  • 单个cookie的最大大小
  • 每个主机/域名+路径的最大cookie数
  • 每个主机/域名的最大cookie数
  • 给定浏览器中所有Cookie的最大数量/最大总大小

我知道RFC 2109指定:

  • 至少300个饼干
  • 每个cookie至少4096个字节(通过Set-Cookie标头的语法描述中构成cookie非终端的字符大小来衡量)
  • 每个唯一的主机或域名至少有20个cookie

但什么是现实世界的规格?

javascript browser cookies cross-browser limit

40
推荐指数
2
解决办法
6万
查看次数

在dev中运行时,未在Google Chrome中设置ASP.net核心身份验证Cookie

我的解决方案中有三个应用程序,全部内置于asp.net core 1 MVC 6中.

  • App 1是用于验证用户的MVC应用程序.
  • App 2是Angular SPA应用程序,是解决方案中的主要应用程序.
  • App 3是MVC web api应用程序.

在应用程序3中,我有通常的asp.net核心SignInManager和UserManager代码(当你启动一个新的MVC 6模板时默认获得相同的代码 - 只有不同的是,它存在于我的web api中).登录/注销/注册等通过我的AccountController中的web api方法公开.这允许我锁定web api,因此只有经过身份验证的请求才会被处理(使用[Authorize]属性).

当我在AccountController中调用"Login"方法时,如果登录成功 - 它返回一个具有以下名称的Set-Cookie指令:".AnspNet.Microsoft.AspNet.Identity.Application"(这用于身份验证)

登录应用程序然后将用户从App1转发到App2.然后对Web api(App3)的所有后续请求进行身份验证并允许执行.注意:通过后续请求 - 特别是我的意思是,在App2中,角度调用以从Web服务请求数据.

所有这一切都很好 - 嗯,它在IE中工作正常.这引出了我的问题,为什么这不适用于Chrome?我看到"Set-Cookie"指令从chrome api Login的响应中返回,但后续请求没有附加此cookie.

我究竟做错了什么?

注意: 登录方法的我的Http响应如下所示:

    HTTP/1.1 200 OK
        Cache-Control: no-cache
        Pragma: no-cache
        Content-Type: application/json; charset=utf-8
        Expires: -1
        Server: Kestrel
        Set-Cookie: .AspNet.Microsoft.AspNet.Identity.Application=CfDJ8FWIuvXs-TxKoIYE8259iAY52B_VZDPTTvYwZ-WAo8hhPCdLhmUfxNZD1wjxEt0sqqnZl6NomwHPNTNFkBxsq4cw_WkQYklnj_dK79wodIguLdPXAbKu6UbS6HKRBxFxjOKVAfIdyxZJ6xA2CtnR9nJC_CSg7v1vFSzgDEiSBso8D3aDNjzFk8
7oIJodC7WLVxWUqdUpjaGRCXqHTYjTwgL9DCihnajAlB921_oEPinUwIPP8g_ugCQmqbFq6kgQ-GwPTifBKRlbtwNsDwbetynl1gIqzELyjgEUAKgtpD9SX7FSjl1grxoGRjbPiXJe-k1SSdnUIHR7wYPkFpiis_c_P1pGkmSyeiDG-lf0xftTlXlnC3BWMbgXeWZn_hsDzbW_Tek3qiq_NB-T0IMGaJgjRnr5DARNcOACWbzwGvHFjsn7n0u7-UZOfzgQJ76d3ra-hjra
    -aNcHLgbfDef3TK6z_CKt2iIlnTkyEJXC-3OSGnfWDRvofvQ216UApEPiKoJxiCjWSvGAQCzvf9P1TtKuwAQVxfWz8pL077E-Wfc-4ybtrT6Ivz2VbdFng5Ze5IQ5YWfYYTpDhLSHGKnpFgxVf96f7JwoXlgRq0gs7yEWdWFZs6d18pw-El5sLJr7g; path=/; secure; httponly
        Access-Control-Allow-Origin: *
        X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcUm9iZXJ0XERlc2t0b3BcSEJFIE1hbmFnZXJcTUFJTlxCbHVlem9uZSBXZWJBcGlcc3JjXEJ6LkFwcGxpY2F0aW9uXEJ6LkFwcGxpY2F0aW9uLkFwaVx3d3dyb290XGFwaVxhY2NvdW50XExvZ2lu?=
        X-Powered-By: ASP.NET
        Date: Wed, 04 May 2016 10:39:57 GMT
        Content-Length: 16
Run Code Online (Sandbox Code Playgroud)

cookies google-chrome claims-based-identity asp.net-core-mvc

11
推荐指数
2
解决办法
3039
查看次数

Chrome丢失了Cookie

我在我的实时网站上收到一个错误,我在Dev环境中没有看到这个错误,而且似乎只发生在Chrome上.我已经四处寻找解决方案,我发现只有Auth cookie的问题.(我实际上在过去提出了关于chrome和auth cookie的问题),但这是不同的.

我将用户购物车存放在cookie中.我这样设置了cookie

HttpCookie responseCookie = HttpContext.Response.Cookies[CartHelper.CART];
responseCookie.PackCartCookie(vm.Cart);
Run Code Online (Sandbox Code Playgroud)

扩展方法PackCartCookie设置cookie值的方式如此

cookie.Value = HttpUtility.UrlEncode(cookieValue);
Run Code Online (Sandbox Code Playgroud)

此结果是使用以下设置存储的cookie

  • Domain = www.foo.com
  • RawSize = 230b
  • 路径= /
  • Expires =会话
  • HttpOnly = HttpOnly
  • 值=加密

当用户与网站进行交互时,似乎正在创建购物车Cookie,但它会不时丢失或丢失.当我查看Elmah错误并查看HTTP_COOKIE时,我可以看到所有其他cookie(我有其他设置方式相同,功能正常)但我没有看到购物车cookie.

由于这个问题,我不得不更改代码以更加防御.但是你可以想象购物车cookie在整个购买过程中被使用,而我在接受付款的时候我已经失败,但是当购物车消失并且没有通知用户成功购买时系统崩溃.幸运的是,我很早就抓住了这个并且退款的用户受到了影响.

我见过这个问题的用户代理

  • Mozilla/5.0(X11; Linux i686)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/29.0.1547.62 Safari/537.36
  • Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/29.0.1547.57 Safari/537.36
  • Mozilla/5.0(Windows NT 6.0)AppleWebKit/537.36(KHTML,像Gecko)Chrome/29.0.1547.62 Safari/537.36

cookies asp.net-mvc google-chrome

5
推荐指数
1
解决办法
3051
查看次数