在同一个浏览器下先打开了 footaobaocom 上的一个页面访问了我们的资源 httpsstatitctaobaoom1jpg这个资源被浏览器缓存了下来和资源内容一起缓存的还有Access-Contro-A1low-Origin httpsfootaobaocom 响应头这时又打开 bartaobaocom 上的一个页面这个页面他要访问资源 httpsstatictaobaocom1jpg 这
要解决这个问题,可以通过在 Nginx 配置中添加相应的响应头来实现。
在 Nginx 的配置文件中,可以使用 add_header 指令来添加响应头。在处理静态资源的位置块中,添加以下配置:
location / {
# 处理静态资源的配置
# 添加 Access-Control-Allow-Origin 头
add_header Access-Control-Allow-Origin $http_origin;
}
这样配置后,Nginx 会根据请求中的 Origin 头,动态地将 Access-Control-Allow-Origin 头设置为相应的值。这样,不同域名下的页面请求资源时,会返回对应的 Access-Control-Allow-Origin 头,避免跨域错误。
另外,为了确保缓存的资源能够正确地更新,可以在 Nginx 配置中添加以下配置:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
# 处理静态资源的配置
# 设置缓存过期时间为1天
expires 1d;
}
这样设置后,缓存的资源将在 1 天后过期,当再次请求资源时,会重新从服务器获取最新的资源。
需要注意的是,以上配置中的 http_origin 变量是根据请求中的 Origin 头来动态设置的,确保了不同域名下的页面能够正确访问资源
原文地址: https://www.cveoy.top/t/topic/iLHG 著作权归作者所有。请勿转载和采集!