我提前为此通用例子道歉,因为问题出在专有的公司系统上。
我支持一个Web应用程序,它允许编辑辅助CSS文件以设置页面样式(在应用程序的限制范围内)。我尝试应用公司范围内使用的非标准字体,但我无权编辑网站的HTML或标题,只能编辑CSS。我尝试在主CSS中声明font-family,同时引用实际的字体文件URL(因为它们在我们的公司站点上使用),但它们实际上从未加载过。
然后我使用相同的font-family片段并为字体声明创建了一个单独的CSS文件,并将URL更改为指向相对路径中的实际文件(例如:url(' fonts / DINWeb)。 woff'))。我将这个fonts.css文件与参考字体文件(eot,ttf和woff版本)一起移动到公共Dropbox文件夹进行测试。我只需使用应用程序CSS顶部的代码行(URL修改)导入fonts.css文件,就可以完成所有工作。
@import url('https://dl.dropboxusercontent.com/.../fonts.css');

问题是Dropbox解决方案仅用于临时测试目的。一旦我确认一切按预期工作,我将确切的文件夹结构移动到批准使用的外部托管位置。当我将CSS中的导入代码更新为新URL时,不会加载该字体。我可以从我的浏览器访问CSS文件和字体文件,没有任何问题,所以我不明白为什么Web应用程序无法加载它。我也有托管在同一主机位置的图像,可以毫无问题地进入网络应用程序,它只是有问题的字体。这些文件在Dropbox上托管时有效,但在其他源上无法使用。我还仔细检查了URL的引用,因为文件夹结构从未改变,所以它们仍然是正确的。
任何建议都会非常感激。理想情况下,我想直接在Web应用程序的CSS中引用公司URL,就像我最初尝试过的那样。如果那是不可能的,我需要它来处理外部托管的文件,因为Dropbox不能用作永久解决方案。
答案 0 :(得分:0)
基本上,您无法从其他域中托管的一个域资源加载,除非第二个主机说您可以。见CORS
您可以通过将所有内容移动到同一个域(或强制用户始终位于特定域中)或将Access-Control-Allow-Origin
标头添加到响应中来解决此问题。
如果您可以编辑服务器中的.htaccess
文件,则可以实现这一点。添加:
Header set Access-Control-Allow-Origin "*"
或将*
替换为您发出请求的域名。
是的,子域名是另一个域名(abc.com
,www.abc.com
和dl.abc.com
不相同)。