IE8请求错误路径的CSS字体

3
我不太确定为什么会出现这种情况,但是我似乎经常收到一些关于IE8请求CSS font-face字体的服务器端错误报告。CSS中的路径是正确相对的,并且我没有看到来自IE9的任何错误。
下面是记录的一个错误示例(某些信息被遮盖)。
{
  "DateTimeUTC": "2012-12-10T15:58:32.2512016+00:00",
  "RequestId": "goq9",
  "UserIP": "72.221.104.224",
  "UserAgent": "Mozilla/4.0 (compatible; MSIE 8.0; AOL 9.6; AOLBuild 4340.5004; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDS; .NET4.0C; Zune 4.7)",
  "ReferringUrl": "https://some-site/some/path/option1/option2",
  "Message": {
    "Exception": null,
    "RequestId": null,
    "ErrorCode": 404,
    "ErrorDescription": "Not Found",
    "OriginalUrl": "/some/path/fonts/rokkitt/rokkitt-webfont.eot"
  },
  "Exception": null,
  "RequestUrl": "https://some-site.com/some/path/fonts/rokkitt/rokkitt-webfont.eot",
  "Cookies": [/*removed from display*/],
  "PostData": {},
  "DebugInfo": null
}

如您所见,似乎该请求是相对于页面URL的字体,而不是CSS文件的URL。 (/content/css/site/site.css中的字体在/content/fonts/...) IE8是否只是偶然检查相对于页面?还是同时检查两者?

我看到类似问题,全部都是IE8,但我无法重新创建此问题。它似乎是AOL支持的IE8,不确定是否有影响。


2
你的样式表路径是什么? - Billy Moat
"../../fonts/xxx" 对于其他浏览器都能正常工作。 - Tracker1
我知道你说在其他浏览器中它可以正常工作,但是"../../fonts/xxx"不会只带你进入CSS目录而不是内容目录吗?应该让你访问字体目录。 - Billy Moat
CSS路径是... /content/css/site/site.css ... 字体路径是 /content/fonts/NAME/font-file.ext ... 在CSS中引用路径为 ../../fonts/NAME/font-file.ext ... 它的行为就像是从页面路径而不是CSS文件路径开始。 - Tracker1
所有的CSS都被合并到一个CSS文件中(由.less构建,然后合并/压缩)...从CSS相对路径来看,字体路径肯定是正确的...这有点让人烦恼。现在在使用Opera时也遇到了类似的问题。我想这可能是搜索引擎模拟浏览器请求所致。 - Tracker1
显示剩余3条评论
1个回答

0
我曾经遇到过同样的问题,我认为这是由于内嵌样式表引起的(即在HTML HEAD中的STYLE元素中的规则)。我在错误日志中看到了IE8寻找奇怪路径中的.eot文件的404。eot文件在我的外部样式表中使用相对路径引用。将此路径与样式表URL相关联的浏览器能够找到字体文件,但似乎IE8偶尔会将路径与文档URL相关联。尽管我无法重现此问题,但日志清楚地描述了该问题。
我们最近更改了应用程序,使用了一个小的内嵌样式表(即HEAD中的STYLE元素),其中包含一些与字体有关的规则,并且在这之后出现了404。因此,我删除了这个内嵌的样式表,并将规则移动到外部样式表中。自从做出这个改变以来,我就再也没有看到404了。
编辑: 这个答案是错误的。将规则从内嵌样式表移动到外部样式表并没有改变行为。我在星期五下午进行了更改,在周末没有看到任何404,但今天(星期一)确实发现了.eot文件的404。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接