目录
问题
a网站加载了b网站的资源(比如字体)ttf|otf|eot|woff|svg|woff2的资源,未配置发现会提示跨域
分析了下根源还是资源请求跨域,为啥css js正常能获取呢,这就跟web服务的资源配置有关系了
apache
<FilesMatch ".(ttf|otf|eot|woff|svg|woff2)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
重启apaches
nginx
server {
# ... 其他服务器配置 ...
location ~* \.(ttf|otf|eot|woff|svg|woff2)$ {
add_header Access-Control-Allow-Origin "*";
# 如果您希望限制允许跨域的域名,可以使用以下方式:
# add_header Access-Control-Allow-Origin "http://yourdomain.com";
# 可选:在响应头中添加其他 CORS 相关设置
add_header Access-Control-Allow-Methods "GET, OPTIONS";
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
# 可选:设置预检请求(OPTIONS 请求)的缓存时间,单位为秒
# add_header Access-Control-Max-Age 3600;
# ... 其他可能需要的配置 ...
}
# ... 其他服务器配置 ...
}
上述配置通过使用 location
挝定了匹配特定字体文件后缀的请求,并通过 add_header
添加了 Access-Control-Allow-Origin
头部,从而允许跨域请求。您可以根据需要进行其他 CORS 相关的头部设置。
请注意,为了确保 Nginx 服务器已经启用了 ngx_http_headers_module
模块,因为该模块提供了 add_header
指令。
完成配置后,请确保重新加载 Nginx 以使更改生效:
sudo service nginx reload
以上只是一个基本的跨域配置示例,具体的设置可能会因您的需求而有所不同。在实际使用中,建议根据具体情况进行调整。