谁添加“_”单下划线查询参数?
Posted
技术标签:
【中文标题】谁添加“_”单下划线查询参数?【英文标题】:Who Add "_" Single Underscore Query Parameter? 【发布时间】:2011-04-10 21:43:46 【问题描述】:我有一个在 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 可能是 NetScaler 上游的 IP?
oki 只是想知道,从未使用过 NetScaler
【参考方案1】:
Ajax 工具,如 jQuery,能够要求浏览器不要缓存请求的结果,因此来自加载网页的每个请求都会到达 Web 服务器并获得最新的响应。
为了实现这一点,请将cache
标志设置为false
,然后在请求URL 中附加一个额外的查询参数,如_=1234567890
。当然这个数字一直在变化,所以浏览器认为这是一个全新的请求,不会提供任何缓存的东西。
【讨论】:
【参考方案2】:jQuery 添加了一个类似的参数来绕过 IE 的缓存。
编辑: 它只将其添加为GET请求,并且只有选项缓存为false:
cache: false
【讨论】:
我确实使用 jQuery,但它不会出现在每个请求中。 您是否使用了一些 ajax 调用来指定 nocache 属性?只有当它是 GET 请求时才会添加它。请参阅下面的 jQuery 代码 if(s.cache === false && type == "GET") 我的页面上只有一个 AJAX 调用,并且我确实设置了 nocache 属性。但是,有些请求没有该参数。 请注意,如果数据类型为'script'
或'jsonp'
,则选项cache
默认为false
。 api.jquery.com/jQuery.ajax
是的,它只是破坏了我对不接受任何额外内容的银行 API 的请求。它像“Surprise MotherF#$&@!”这样不知从何而来。 -_-【参考方案3】:
可能是 JQuery CacheBuster 参数。
资源:
[jQuery] GData JSON queries "Invalid query parameters:_" [jQuery] Turn off Cache Busting in $.getScript Cache-busting【讨论】:
【参考方案4】:1283458471913 是以毫秒为单位的 unix 时间戳,可能是一个机器人/代理,以确保它们获得一个新页面而不是缓存版本。
也可能是 jQuery,这会导致您将 nocache 属性设置为 true 的 AJAX 请求。
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 : "");
【讨论】:
【参考方案5】:可能是反向代理添加的一个虚拟参数,用于强制提供非缓存内容。
【讨论】:
以上是关于谁添加“_”单下划线查询参数?的主要内容,如果未能解决你的问题,请参考以下文章