我们已开始向 cookie 添加一些用户详细信息,以供其他子域访问。这很有效,但是当用户访问公共网站domain.com时,它也会添加更多cookie,然后返回到一些应用程序,我们会得到400 error Request Header or Cookie Too Large
我用 google 搜索了一下,发现我们可以设置 nginx 来允许更高的阈值,甚至我们的一台 .Net 服务器也给了我们类似的错误。
查看 Chrome 开发工具栏中的 cookie,看起来我们没有超出记录的限制。这就是我认为我遗漏了一些东西的地方。是不是nginx故意配置的太低了?还是这些尺寸有误?
实际的用户代理实现对其可以存储的 cookie 的数量和大小有限制。通用用户代理应该提供以下每一项最低限度的功能:
o 每个 cookie 至少 4096 字节(通过 cookie 名称、值和属性的长度总和来衡量)。
o 每个域至少有 50 个 cookie。
o 总共至少 3000 个 cookie。
服务器应该使用尽可能少、尽可能小的 cookie,以避免达到这些实现限制,并最大限度地减少网络带宽,因为每个请求中都包含 Cookie 标头。
如果用户代理无法在 Cookie 标头中返回一个或多个 cookie,服务器应该优雅地降级,因为用户代理可能会根据用户的命令随时驱逐任何 cookie。
参考: https: //www.ietf.org/rfc/rfc6265.txt
我们最大的 cookie 是 2842 字节,远低于 4096 的限制。我们总共有 30 块 cookie,再次低于 50 块限制
如果我删除大约 1024 字节的 cookie,它就可以工作。但我仍然拥有前三名最大的...
您可能会达到另一个可能的限制,即整个 HTTP 请求标头大小(Cookie
您的案例的标头),请参阅此SO 线程了解更多详细信息。对于 nginx Web 服务器,它的值由指令控制large_client_header_buffers
,默认情况下等于 4 个 8K 字节的缓冲区。尝试增加它例如
large_client_header_buffers 4 16k;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9832 次 |
最近记录: |