下面这两个url
https://www.tinygimp.com/text3d/
https://tinygimp.com/text3d/
都是3d文字生成器页面,都需要请求字体文件https://tinygimp.com/ttf/Varsity%20Team.ttf
一开始,我在nginx配置了,
当host或referer中域名只要是tinygimp.com的子域名,就允许相应的origin
https://www.tinygimp.com/text3d/
访问字体时,返回头中加了
Access-Control-Allow-Origin:https://www.tinygimp.com
https://tinygimp.com/text3d/
访问字体时,返回头中加了
Access-Control-Allow-Origin:https://tinygimp.com
乍一看和试了一下好像没问题了。
但偶尔还是会出现跨域错误,百思不得其解。
后来发现,出现问题的情形是:
先在https://tinygimp.com/text3d/
访问字体,然后浏览器缓存了字体,同时带有的跨域头是Access-Control-Allow-Origin:https://tinygimp.com
当再在https://www.tinygimp.com/text3d/
访问字体时,不适用缓存还好,使用缓存,就会出现跨域错误。因为缓存中的Access-Control-Allow-Origin
是https://tinygimp.com
,没有www
最后,改成了只要host或referer中域名是tinygimp.com的子域名,就添加Access-Control-Allow-Origin:*
,这样即使缓存了,缓存的也是*
解决。