为什么CSS数据URI会记录为404请求?
为了减少整个站点的请求数量,我们使用CSS数据URI,而不是链接到外部图像。出于某种原因,这些数据URI偶尔仍被记录为针对我们服务器的404请求。为什么会发生这种情况 随机详细信息:为什么CSS数据URI会记录为404请求?,css,request,http-status-code-404,data-uri,splunk,Css,Request,Http Status Code 404,Data Uri,Splunk,为了减少整个站点的请求数量,我们使用CSS数据URI,而不是链接到外部图像。出于某种原因,这些数据URI偶尔仍被记录为针对我们服务器的404请求。为什么会发生这种情况 随机详细信息: 我们正在使用跟踪 发生在多个数据URI中 发生在所有浏览器上 在我们网站的多个页面上 我们的QA无法复制该问题 下面是特定数据URI的结果 相关CSS文件-() 同一文件的未统一版本-(参见第35行) 相关CSS: body{background:#e2decd url(data:image/png;base6
- 我们正在使用跟踪
- 发生在多个数据URI中
- 发生在所有浏览器上
- 在我们网站的多个页面上
- 我们的QA无法复制该问题
- 下面是特定数据URI的结果
- 相关CSS文件-()
- 同一文件的未统一版本-(参见第35行)
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 cs_uri_stem="/lib/tgn/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGuCAIAAADeSvtRAAAAfUlEQVQ4y9WTzQ7AIAiD+fr+rzzYSeOWGP+z7MABwVJstYiQmf02zvP3yrk2442Gqvijb9LT34tJ7vVP5u/zTBzDP113n/eYCv3ec1IOLGjn1bu9+K0zQEad/4r/iMj8dvLfVqetfcsf5X6z/y7ieuVk/SU19wMesxMXQMANapSO6rYFQnIAAAAASUVORK5CYII="
任何帮助/指导都将不胜感激
我同意斯里坎的评论。在我看来,你的代码中有什么东西在
/lib/tgn/
url字符串的前面附加了/lib/tgn/
,最后将其放在数据之前,生成/lib/tgn/data:image/png
,这是无效的
您需要跟踪该代码,如果它是数据uri,则让它一起忽略该字符串,同时仍然允许它将图像路径附加到在/lib/tgn/
目录中保存和访问的图像
添加了解释
根据您的评论,我不确定我们是否沟通得很清楚。我从您上面发布的“生成下图的查询”代码中看到:
您发布的图像显示了cs\u uri\u stem
值,所有这些值都在数据/image/png
之前插入了/lib/tgn/
。某种原因(可能是您的CDN组合,可能是服务器上的url重写规则,或其他原因)似乎导致/lib/tgn/
代码被添加到cssurl()
处理/请求时的代码(因为它似乎没有直接添加到CSS中,因为缩小或扩展的代码都没有显示它已添加)但是您发布的图像显示的最终结果表明导致404个错误的cs\u uri\u stem
都在data:image/png
之前添加了/lib/tgn/
。因此浏览器最终不会处理url()
作为数据因为请求是以路径开始的,即/lib/tgn/data:image/png…
。因为它认为它正在查找路径开始的文件/lib/tgn/
,所以浏览器发出一个请求(当然)它永远不会实现,因此会生成404错误
现在,也许我还不清楚您在评论中指的是什么,但也许我已经更清楚地说明了我认为您的问题是什么。数据uri不是从数据开始的吗:如果它与url重写有关,那么您应该过滤它,而不是在服务器或Splunk配置上重新写入(我不知道如何设置)。听起来很明显,我猜:)我的一个客户机在非IIS服务器上也看到了这一点。他们之所以以/lib/tgn/开头,是因为这是CSS文件的相对路径;如果他(?)将CSS放在根目录中,数据URI请求将显示为/data:image/png[…]我们的CDN会自动合并和缩小文件。当它通过我们的combinator时,我们会转到。我已经更新了上面的URL,以了解这在我们的生产环境中是如何使用的。很抱歉,一开始就应该这样做。我不太确定我们是否就同样的事情进行了沟通。我在回答中添加了进一步的解释,但我可能仍然是误解了您在评论中想要澄清的一些内容。在您最初的回答中,我认为您的意思是/lib/tgn/
被添加到了实际的CSS文件中,而事实并非如此。我认为这与服务器端重写规则无关,因为它的行为与任何其他相对包含的图像一样。但是更大的问题是,为什么会将其作为服务器端请求处理。这就像浏览器没有将数据:image/png;base64,iVBORw0…
识别为有效的数据URI,因此它会向服务器发出请求……嗯,我最初的回答很模糊,因为它似乎被添加到了某个地方(可能是在CSS中或其他地方)。您的评论意味着您确实有一个服务器重写规则要添加/lib/tgn/
,对吗?如果是,这将解释为什么它会显示这一点,但我同意,它不会解释为什么一开始就发出请求(只有当它被添加到CSS中时才会如此)@user1394692:还有两个想法。一个是,另一个在线帖子指出(理论上其他搜索引擎)有时会做一些事情,导致请求字符串中出现这样的“添加”。第二个是,你是否尝试过将请求用引号(url(
)括起来,看看它是否碰巧解决了问题(可能是数据字符串中的某个不正确转义字符触发它发出请求)?
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="
cs_uri_stem="/lib/tgn/data:image/png;base64,iVBORw0KGgo... [etc.]"