3

在一个自定义 PHP 框架上,我实现了一个邮件类,让我知道何时发生 404。它会将 url、referrer 和 UA 字符串邮寄给我。

我收到了两种类型的无法解释的 404 报告,用于在网站上的任何地方都没有链接的 url。这种情况经常发生。我已经在报告来源的确切浏览器版本上进行了测试。我在 html 和 javascript 中都找不到任何错误。这些页面通常只包含一点点 javascript btw。

类型 1 示例:

source: http://www.example.com/articles/example-article
target (404): http://www.example.com/articles/undefined
User agents who have reported this:
- Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
(Chrome 30.0.1599.101 on win7)
- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; BOIE9;ENUSMSE)
(IE9 on win vista)
- Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0;WUID=78780BB80C56415F887179239977F107;WTB=6581)
(IE10 on win 8)

类型 2 示例:

source: http://www.example.com/articles/example-article
target (404): http://www.example.com/articles
User agents who have reported this:
- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E)
(IE8 on win7)
- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4325; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30707; MS-RTC LM 8)
(IE7 on windows server 2003)
- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.5; .NET CLR 1.1.4322 ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
(IE8 on winXP)
- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB7.5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; .NET C LR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; HYVES)
(IE8 on win vista)

谁能帮我解释一下这些?是否有可能是错误的 Windows 浏览器插件?我还没有看到任何这些报告发生在其他操作系统上,然后是 windows。尽管这些网站也确实获得了来自其他操作系统的大量访问。

干杯!

编辑#1 我用useragentstring.com来解释 UA 字符串

编辑#2 Palec、Fabio Beltramini 和 Artur 的回答帮助我进一步理解了这个问题,我觉得他们都做出了同样的贡献。由于我只能接受/奖励一个答案,因此我选择接受 Palec 的答案,因为他先回答。非常感谢大家的思考。如果我在调试过程中遇到任何值得注意的事情,我会在此处添加。

4

4 回答 4

2

可能的解释是:

  • JS代码坏了,很难触发
  • 浏览器插件损坏
  • 空链接目标 ( <a href="">)
  • 一个机器人出于某种原因尝试奇怪的 URL

URL 中的未定义是 JavaScript 损坏的典型标志。对包含当前文档的(逻辑)文件夹的不必要引用通常是由 IE 的臭名昭著的错误引起的——它将空路径解释为不是当前文档,而是.(包含文件夹),因此空链接目标在 IE 和其他浏览器中的工作方式不同。与机器人相关的错误本身就是一个故事——我只能补充说,它们构成请求的路径和引用者并不少见。

支持我关于损坏插件的猜想的两个 Stack Overflow 问题:

有关 IE 的空 href 错误的详细信息(此处链接的官方资源):

于 2013-10-29T00:23:25.053 回答
1

我知道这个问题,因为我过去曾提出过这个问题。

我管理一个可见的服务器。有一小部分用户会生成这些请求(恒定的用户集)。它们总是源自 MSIE 7、8、9 浏览器。数以千计的其他用户可能使用相同的浏览器——查看相同的站点,执行相同的操作,但所有用户都将按预期工作。

它仅与主机+浏览器+库相关,因此您无能为力,因为它在用户端。

作为 99.9% 的网络问题,它与 Internet Explorer 相关 - 时期。你必须忍受这一点。

小更新

尽管您看到这些.../undefined链接建议用户去那里 - 他们完全没有意识到这一点。我已经询问了这些查询的来源用户,没有人知道这一点,也没有人在他们的浏览器中看到类似.../undefined的 404 错误。所以它很可能是背景的东西。

于 2013-10-31T17:31:21.787 回答
1

没有看到实际的示例页面就很难说。很可能一个 javascript 函数正在动态确定某些页面资源或链接的 URL,并且某些浏览器中的不同 JS 功能导致该变量未定义。

请注意,这并不意味着用户必须导航到该页面。也许浏览器只是试图从该 URL 加载图像。

在浏览器中测试一下,看看你看到了什么网络请求:

var a=undefined;
var i=new Image();
i.src=a;

缩小问题根源的一种有用方法是同时记录“接受”http 标头。这样您就可以区分请求是否是导航的结果(它的值类似于“Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, / ;q= 0.8") 或者是否是一些页面资源,例如图像 (Accept:image/webp, / ;q=0.8)

于 2013-11-03T05:15:31.977 回答
0

在我的情况下,我在 IE9 和 IE10 用户代理中引发了以下错误:Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.1;WOW64;Trident/5.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;。 NET CLR 3.0.30729;Media Center PC 6.0) 时间戳:2014 年 7 月 30 日星期三 17:07:13 UTC 消息:语法错误行:1 字符:1 代码:0 URI:https ://your.website.com/js /jquery/plugins/jqgrid/v452/js/i18n/grid.locale-en.js

调试后归结为一个简单的路径问题。被称为“grid.locale-en.js”的资源位于不同的路径中。即,“v452”之后的“js”不存在。通过更正指向正确的路径解决了这个问题。

希望这可以帮助。

于 2014-08-01T13:04:40.600 回答