将 CORS 标头与 CSS 背景图像一起使用

Posted

技术标签:

【中文标题】将 CORS 标头与 CSS 背景图像一起使用【英文标题】:Using CORS headers with CSS background-image 【发布时间】:2014-03-05 12:08:18 【问题描述】:

简短地说:有没有办法在 CSS 中使用 background-image 属性对图像进行跨源请求。我需要类似 crossOrigin 属性的 img 标签,但在 CSS 中。

我遇到了一个问题,因为 chrome 缓存了没有 CORS 标头的响应,然后,当 <img> 标记使用相同的源时,我得到了一个跨域错误,因为它使用的缓存响应没有具有必要的 CORS 标头。

【问题讨论】:

为什么不直接在 img src URL 中附加一个“cache buster”查询参数(比如时间戳)? 这可能是我最终会做的,除非有更好的解决方案。 这实际上对我不起作用。我发送请求以响应 302 重定向到不同 URL 的 URL,并且正在缓存的是第二个 URL。为了破坏缓存,我需要服务器向重定向的 URL 添加查询参数,这并不理想。 经过一些研究,我确定真正的问题是 Amazon S3 没有设置“Vary: Origin”标头,即使它被配置为支持 CORS。如果有人知道如何让 S3 做到这一点,那也是一个很好的答案。 【参考方案1】:

检查此 API。我想您需要配置您的请求以获取标头以绕过缓存响应..

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html

【讨论】:

正如我在上面的评论中提到的,缓存的 url 来自 302 重定向,所以我对实际请求没有太多控制权。

以上是关于将 CORS 标头与 CSS 背景图像一起使用的主要内容,如果未能解决你的问题,请参考以下文章

css 与背景图像的二十六个全宽标头

css 与背景图像的二十六个全宽标头

css 与背景图像的二十六个全宽标头

将 Fetch 与授权标头和 CORS 一起使用

使用 CSS 模糊图像或背景图像的边缘

将 fetch 与 Express、React、cors、cookie 一起使用 - “Access-Control-Allow-Origin”标头