在自定义PHP框架上,我实现了一个邮件类,让我知道404何时发生。它将我的网址,推荐人和UA字符串邮寄给我。
对于未在网站上任何位置链接的网址,我会收到两种无法解释的404报告。这种情况经常发生。我已根据报告源自的确切浏览器版本进行了测试。我在html和javascript中都找不到任何错误。这些页面通常只包含一点点javascript btw。
Type1示例:
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)
Type2示例:
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的答案,因为他先回答。非常感谢大家一起思考。如果我在调试过程中遇到任何值得注意的事情,我会在这里添加它。
答案 0 :(得分:2)
可能的解释是:
<a href="">
) URL中未定义是JavaScript损坏的典型标志。对包含当前文档的(逻辑)文件夹的不需要的引用通常是由IE的臭名昭着的错误引起的 - 它将空路径解释为不是当前文档,而是解释为.
(包含文件夹),因此空链接目标在IE和其他浏览器中的工作方式不同。与Bot相关的错误本身就是一个故事 - 我只能补充一点,他们组成所请求的路径和引用者并不罕见。
两个Stack Overflow问题支持我关于破坏插件的猜想:
有关IE的空href错误(官方资源链接)的详细信息:
答案 1 :(得分:1)
我知道这个问题,因为我过去已经把它弄了。
我管理一个可见的服务器。有一小组用户生成这些请求(常量用户集)。他们总是来自MSIE 7,8,9浏览器。 成千上万的其他用户可能会使用相同的浏览器 - 查看相同的网站,做同样的事情,但所有用户都会按预期工作。
它完全是主机+浏览器+库相关的,因此在用户方面没有任何关于它的事情。
99.9%的网络问题与Internet Explorer相关 - 期间。你必须忍受这一点。
小更新:
虽然您看到这些 ... / undefined 链接建议用户去那里 - 但他们完全没有意识到这一点。我已经向用户询问了这些查询的来源,并且没有人知道这些或在浏览器中看到类似 ... / undefined 的错误。所以它很可能是背景材料。
答案 2 :(得分:1)
如果没有看到实际的示例页面,很难说。很可能javascript函数是动态确定某些页面上资源或链接的URL,而某些浏览器中的不同JS功能导致变量未定义。
请注意,这并不意味着用户必须导航到该页面。也许浏览器只是尝试从此URL加载图像。
在浏览器中测试此内容并查看您看到的网络请求:
var a=undefined;
var i=new Image();
i.src=a;
缩小问题根源的一种有用方法是记录“Accept”http标头。这样你可以区分请求是否是导航的结果(它的值类似于“Accept:text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp, / ; q = 0.8“)或是否是某些页面资源(如图像)(接受:image / webp, / ; q = 0.8)
答案 3 :(得分: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 Char:1 代码:0 URI:https://your.website.com/js/jquery/plugins/jqgrid/v452/js/i18n/grid.locale-en.js
调试后,它归结为一个简单的路径问题。被称为“grid.locale-en.js”的资源位于不同的路径中。即“v452”之后的“js”不存在。通过纠正指向正确的路径来解决问题。
希望这有帮助。