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

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 运行。

【问题讨论】:

为什么 IP 10.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】:

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

【讨论】:

以上是关于谁添加“_”单下划线查询参数?的主要内容,如果未能解决你的问题,请参考以下文章

python的单下划线和双下划线

python 单下划线和双下划线

私有化 : _x: 单前置下划线,私有化属性或方法;__xx:双前置下划线;__xx__:双前后下划线

python双下滑线,单下划线

【变量】关于单下划线、双下划线开头变量的含义

python单/双下划线使用