我在域名example.com
上设置了cookie。当我在我的CSS中有这个并转到Web服务器时,此cookie包含在字体请求中
@font-face {
font-family: Uniform;
src: url("/font1.otf")
format("opentype");
}
但是,如果我尝试加载了一个字体从不同的服务器托管在一个子域然后cookie不会得到发送虽然
@font-face {
font-family: Uniform;
src: url("https://asset.example.com/font1.otf")
format("opentype");
}
但是,如果我在div上加载一个图像作为背景图像,cookie会被发送,尽管绝对没有问题。比如说,
.bug {
background-image: url("https://asset.example.com/my-img.png");
position: absolute;
top: 30px;
right: 30px;
filter: invert(100%);
max-width: 150px;
}
我在这件事上已经绕了好几个小时了。任何帮助都将是非常高兴的
我已经尝试将samesite设置为cookie上的所有三个选项,以及cookie是否安全。
1条答案
按热度按时间fquxozlt1#
当涉及到跨域请求时,Web字体的处理方式与其他类型的资源不同。
快速搜索一下,我找到了Cookie Request Header for Web Fonts,那里的一条评论提到了https://bugs.chromium.org/p/chromium/issues/detail?id=411338--在那里你会发现一条评论说:
CSS Fonts Module Level 3规定用户代理必须使用启用CORS的获取的“匿名”模式[1],这意味着无论服务器的Access-Control-Allow-Credentials头如何,都不会发送凭据。(Chrome 37的XMLHttpRequest更改与字体提取无关。
[1] http://www.w3.org/TR/css3-fonts/#font-fetching-requirements
因此,由于规范的关系,您在这里想要的只是 * 必须 * 不能 * 工作。