谁添加“_”单个下划线查询参数?

时间:2010-09-10 19:32:36

标签: php javascript ajax apache http

我在Apache上运行了一个PHP服务器,我得到了很多请求,

10.1.1.211 - - [02/Sep/2010:16:14:31 -0400] "GET /request?_=1283458471913&action=get_list HTTP/1.1" 200 547 0 "http://www.example.com/request" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)" 28632 15602

_参数被神秘地添加到请求中。我试图找出谁在做那件事。

在Apache面前运行一个NetScaler。

5 个答案:

答案 0 :(得分:100)

jQuery添加了一个这样的参数来绕过IE的缓存。

编辑: 它只为get请求添加它,并且仅当选项缓存为false时才会添加:

cache: false

答案 1 :(得分:9)

答案 2 :(得分:3)

可能它是反向代理添加的虚拟参数,用于强制提供非缓存内容。

答案 3 :(得分:2)

1283458471913是一个以毫秒为单位的unix时间戳,可能是一个机器人/代理,确保它们获得一个新页面而不是一个缓存版本。

也可能是jQuery,这会导致对于AJAX请求,你将nocache属性设置为true。

if ( s.cache === false && type == "GET" ) {
    var ts = now();
    // try replacing _= if it is there

    var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2″);
    // if nothing was replaced, add timestamp to the end

    s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
}

答案 4 :(得分:0)

Ajax工具(例如jQuery)能够要求浏览器不缓存请求的结果,因此来自已加载网页的每个请求都将传输到Web服务器并获得最新的响应。

为了实现这一点,请将cache标志设置为false,然后将附加查询参数(例如_=1234567890)附加到请求URL中。当然,这个数字总是在变化,因此浏览器认为它是一个全新的请求,不会提供任何缓存的内容。