繁体   English   中英

PHP应用程序上无法解释的404错误

[英]Unexplained 404 errors on PHP app

在自定义PHP框架上,我实现了一个邮件类,让我知道404何时发生。 它邮寄给我的url,referrer和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的答案,因为他先回答。 非常感谢大家一起思考。 如果我在调试过程中遇到任何值得注意的事情,我会在这里添加它。

可能的解释是:

  • 破解JS代码,很难触发
  • 破碎的浏览器插件
  • 空链接目标( <a href="">
  • 由于某种原因,机器人尝试奇怪的URL

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

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

关于IE的空href bug(官方资源链接)的详细信息:

我知道这个问题,因为我过去曾经这样做过。

我管理一个可见的服务器。 有一小组用户生成这些请求(常量用户集)。 他们总是来自MSIE 7,8,9浏览器。 成千上万的其他用户可能会使用相同的浏览器 - 查看相同的网站,做同样的事情,但所有用户都会按预期工作。

它完全是主机+浏览器+库相关的,因此在用户方面没有任何关于它的事情。

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

小更新

虽然你看到这些...... /未定义的链接建议用户去那里 - 但他们完全没有意识到这一点。 我已经向用户询问了这些查询的来源,并且没有人知道这一点,或者在浏览器中看到过类似于/未定义的 404错误。 所以它很可能是背景材料。

没有看到实际的示例页面就很难说。 很可能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)

我的情况我在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”不存在。 通过纠正指向正确的路径来解决问题。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM