为什么将CSS数据URI记录为404请求?

时间:2013-06-24 15:48:14

标签: css request http-status-code-404 data-uri splunk

为了减少我们网站上的请求数量,我们使用CSS数据URI而不是链接到外部图像。出于某种原因,这些数据URI偶尔仍被记录为针对我们服务器的404请求。为什么会发生这种情况?

随机详情:

相关CSS:

body{background:#e2decd url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGuCAIAAADeSvtRAAAAfUlEQVQ4y9WTzQ7AIAiD+fr+rzzYSeOWGP+z7MABwVJstYiQmf02zvP3yrk2442Gqvijb9LT34tJ7vVP5u/zTBzDP113n/eYCv3ec1IOLGjn1bu9+K0zQEad/4r/iMj8dvLfVqetfcsf5X6z/y7ieuVk/SU19wMesxMXQMANapSO6rYFQnIAAAAASUVORK5CYII=) repeat-x 0 0}

查询我们所有的404错误(我们的前10个404错误中有5个数据URI):

sourcetype=iis* host=prd*ssscdn* sc_status=404 | top 100 cs_uri_stem

生成以下图片的查询:

sourcetype=iis* host=prd*ssscdn* sc_status=404 cs_uri_stem="/lib/tgn/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGuCAIAAADeSvtRAAAAfUlEQVQ4y9WTzQ7AIAiD+fr+rzzYSeOWGP+z7MABwVJstYiQmf02zvP3yrk2442Gqvijb9LT34tJ7vVP5u/zTBzDP113n/eYCv3ec1IOLGjn1bu9+K0zQEad/4r/iMj8dvLfVqetfcsf5X6z/y7ieuVk/SU19wMesxMXQMANapSO6rYFQnIAAAAASUVORK5CYII="

任何帮助/方向都会非常感激!


alt text http://www.jasonbuckboyer.com/playground/blah/data-uri-404-error1.png

1 个答案:

答案 0 :(得分:0)

我对Srikanth的评论表示赞同。在我看来,您的代码中有一些内容将/lib/tgn/粘贴到url字符串的前面,最后将其放在data之前以生成/lib/tgn/data:image/png,这是无效的。

如果它是数据uri,你需要跟踪该代码并让它忽略所有字符串,同时仍然允许它将图像路径附加到/lib/tgn/目录中保存和访问的图像。 / p>

添加说明

根据您的评论,我不确定我们是否清楚地沟通。我在上面发布的“生成以下图片的查询”代码中看到的是:

cs_uri_stem="/lib/tgn/data:image/png;base64,iVBORw0KGgo... [etc.]"

您发布的图片显示在cs_uri_stem之前插入了/lib/tgn/的{​​{1}}值。 Something (也许是您的CDN组合,可能是服务器上的网址重写规则或其他内容)似乎导致data:image/png代码被添加到css /lib/tgn/代码中进程/请求时间(因为它似乎没有将直接添加到CSS中,因为您的缩小代码和扩展代码都没有显示它已添加)。但是,您发布的图片显示的最终结果表明导致404错误的url()cs_uri_stem之前添加了/lib/tgn/。因此,浏览器最终没有将data:image/png视为 数据 ,因为请求是以 路径 ,即url()。由于它认为它正在寻找从路径/lib/tgn/data:image/png ...开始的文件,因此浏览器会发出一个请求(当然)它永远不会被满足,因此会产生404错误。

现在也许我仍然不清楚你在评论中指的是什么,但也许我已经让自己更清楚地知道我认为你的问题是什么。