2010-09-16 138 views
3

当我查看我的服务器日志时,我发现周期性的GET请求会在来自同一个IP的POST请求之前立即进入,并且具有相同的引用。我期望POST,但不是GET。有没有人见过这个?在POST请求之前显示GET请求的服务器日志

为了将POST请求发送到服务器,我使用javascript动态创建了iframe内的表单。我无法使用Ajax,因为POST请求是到不同的域。这在大约95%的时间内工作。在POST之前我有5%的时间获得GET请求。它似乎从同一个IP重复发生。

这里是服务器日志:

10.160.42.113 - - [16/Sep/2010:04:33:08 +0000] "GET /pixel HTTP/1.1" 200 2 "url" "Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 (.NET CLR 3.5.30729)" 
10.160.42.113 - - [16/Sep/2010:04:33:08 +0000] "POST /pixel HTTP/1.1" 200 2 "url" "Mozilla/5.0 (Windows; U; Windows NT 5.1; hu; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 (.NET CLR 3.5.30729)" 

这里是js代码:

var iframe = document.createElement("iframe"); 
iframe.height = "0"; 
iframe.width = "0"; 
iframe.frameBorder = "0"; 
document.getElementById('canvas').appendChild(iframe); 


var iframeDocument = iframe.contentDocument || iframe.contentWindow.document || iframe.document; 
iframeDocument.open(); 
iframeDocument.close(); 


var form = document.createElement("form"); 
form.setAttribute("action", 'url'); 
form.setAttribute("method", 'POST'); 

for (var key in params) { 
    var hiddenField = document.createElement("input"); 
    hiddenField.setAttribute("type", "hidden"); 
    hiddenField.setAttribute("name", key); 
    hiddenField.setAttribute("value", params[key]); 

    form.appendChild(hiddenField); 
} 

iframeDocument.body.appendChild(form); 
form.submit(); 

回答

0

只是一个想法 - 如果有人提交表单会发生什么,然后重新加载页面,或使用浏览器上的后退/前进按钮?可能是他们的浏览器在回溯历史时试图“获得”提交的目标的情况。