通过Javascript发送POST请求的安全方式

时间:2014-07-22 17:47:52

标签: javascript php jquery ajax xmlhttprequest

我正在通过一个具有以下功能的按钮向我的PHP文件发送POST请求:

function buttonFunction() {
    $.post("http://ipaddress/core/file.php",{username:username, password:pword, coins:coins}, function(data) {
        // Stuff
    });
}

但是,我最近发现,如果文件进程/ PHP脚本仍在运行(尝试获取结果数据/响应),并且用户刷新页面,则PHP进程仍将在服务器上运行。此外,如果用户随后决定再次单击该按钮(刷新后),则会在服务器上从同一用户运行两个PHP进程(即,如果第一个仍在运行):

Javascript Abort POST Request on Retry/Refresh (HIGH CPU Usage)

但是,我遇到了使用Javascript发送带有XMLHttpRequest的POST数据:

Send POST data using XMLHttpRequest

因此,假设我以这种方式发送POST请求,是否可以安全地说当用户刷新/关闭页面时,PHP执行结束了?

function buttonFunction() {
    var http = new XMLHttpRequest();
    var url = "get_data.php";
    var params = "lorem=ipsum&name=binny";
    http.open("POST", url, true);

    //Send the proper header information along with the request
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", params.length);
    http.setRequestHeader("Connection", "close");

    http.onreadystatechange = function() {//Call a function when the state changes.
        if(http.readyState == 4 && http.status == 200) {
            alert(http.responseText);
        }
    }
    http.send(params);
}

但是,如果这也不起作用,我该如何解决此问题(来自同一用户的多个脚本在后台运行)?无论是在PHP文件中还是在JavaScript本身中,都可以获得任何帮助。

修改1:

可能的解决方案?

如果我使用XMLHttpRequest并在页面卸载之前中止请求该怎么办?

window.onbeforeunload = function(event) {
    http.abort();
};

0 个答案:

没有答案