簡體   English   中英

服務器日志在POST請求之前顯示GET請求

[英]Server logs showing GET request right before POST request

當我查看我的服務器日志時,我看到在來自具有相同引用者的相同ip的POST請求之前即時發出GET請求。 我期待POST,但不是GET。 誰看過這個嗎?

我正在使用javascript在iframe中動態創建表單,以便將POST請求發送到服務器。 我不能使用Ajax,因為POST請求是針對不同的域。 這大約有95%的時間都可以使用。 5%的時間我在POST之前收到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();

這可能是跨原始請求共享'預檢'請求。 請參閱我的代碼未發出的POST請求之前的其他GET請求

您需要在Web服務器上處理CORS預檢請求。

只是一個想法 - 如果有人提交表單,然后重新加載頁面,或使用瀏覽器上的后退/前進按鈕會發生什么? 可能是他們的瀏覽器在向后移動歷史時試圖“獲取”提交目標的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM