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


75

我有一个在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。


为什么IP10.1.1.211是路由器/调制解调器提供的本地IP?
罗伯特·皮特(RobertPitt)2010年

@RobertPitt可能是NetScaler上游的IP?
jfrobishow

OKI只是想知道,从未使用过NetScaler
RobertPitt 2010年

Answers:


108

jQuery添加了类似的参数来绕开IE的缓存。

编辑:仅在选项缓存为false时,才将其添加到get请求中:

cache: false

我确实使用了jQuery,但并未出现在每个请求中。
ZZ编码器2010年

您是否在使用某个ajax调用来指定nocache属性?仅当它是GET请求时,才添加它。请参阅下面我的代码从jQuery的,如果(s.cache ===假&&类型== “GET”)
jfrobishow

我的页面上只有一个AJAX调用,并且确实设置了nocache属性。但是,某些请求没有该参数。
ZZ编码器2010年

3
请注意,如果数据类型为或,则该选项cache默认为。api.jquery.com/jQuery.ajaxfalse'script''jsonp'
Kaivosukeltaja 2013年

11
是的,它只是破坏了我对不接受任何额外费用的银行API的请求。它来自“惊喜母亲F#$&@!”之类的地方。-_-
Tancrede Chazallet 2014年


3

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


2

1283458471913是一个以ms为单位的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 : "");
}

0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.