【发布时间】:2022-01-20 16:01:33
【问题描述】:
我正在学习本教程: https://docs.microsoft.com/en-us/graph/tutorials/aspnet-core?tutorial-step=3 这基本上在登录后向用户身份添加了自定义声明。其中一项声明是存储为 base64 字符串的用户个人资料图片。但是,这会使 cookie 太大,并且网络服务器无法加载该站点。这是添加图片的代码:
var photo = await graphClient.Me
.Photo
.Content
.Request()
.GetAsync();
var memoryStream = new MemoryStream();
photo.CopyTo(memoryStream);
var photoBytes = memoryStream.ToArray();
photoUrl = $"data:image/png;base64,{Convert.ToBase64String(photoBytes)}";
照片是从 Microsoft Graph API 获取的,并以 Stream 的形式返回,我将其转换为 base64 字符串。我错过了什么吗?任何帮助将不胜感激。
【问题讨论】:
-
图片文件转Base64后有多大? Cookie 的限制为 4096 字节。请参考文档:Asp.Net Cookies您可以随时将图像保存在 Session 中。
-
嘿,这个图像相当大,它有 58k 字节。然而,这成为今天的一个问题,昨天它工作得很好。唯一的区别是一些 Windows 10 更新,我怀疑这与问题有关。
-
Cookies 作为标头发送,红隼的默认限制为 32KB,如果需要,您可以增加:docs.microsoft.com/en-us/dotnet/api/…。
-
@Artur 浏览器,然而,每个来源往往有大约 4096 字节 (4KB) 的限制:chromestatus.com/feature/4946713618939904:“用户代理现在需要限制 cookie 名称和value 为 4096 字节,并将每个 cookie 属性值的长度限制为 1024 字节"
-
@Dai 你是对的。但是 4KB 的限制是针对单个 cookie 的。 Asp.Net Core 自动将大于 4KB 的 cookie 拆分成块。我相信 OP 的问题是发送到服务器的所有 cookie 的总大小超过了 max
MaxRequestHeadersTotalSize
标签: c# asp.net-core cookies