AJAX Post Request通过VPN剥离请求数据


AJAX Post Request over VPN stripping request data

我有一个web应用程序是托管在公司内部网后面。对于任何需要远程访问的用户,当前的解决方案是通过VPN连接,然后使用内部站点位置。

基于PHP的应用程序,前端构建在AJAX请求上,从PHP后端获取信息和页面。

在内部网络中,没有问题,但是通过VPN连接几乎80%的AJAX请求都失败了。

这就是发生的事情,浏览器正在进行正确的调用,并附加所有的post数据。服务器正在接收请求,但没有数据,然后根据需要返回一个失败。我试过只是回显$_POST数组,当它失败时它是空的。

有什么想法可以导致剥离只是post数据在途中?VPN提供商是Microsoft TMG,站点托管在IIS 8.5上。

编辑:下面是一些示例代码,以便更好地了解我所看到的内容。

JS:

var submit = 'test';
$.ajax({
        type:'POST',
        data: submit,
        url:base_url+'ajax_get_data/',
        dataType: 'json',
        timeout: 8000,
        success: function(data) {   
            // Do soemthing
        },
        error: function(e){
            // Error
        }
    });
PHP:

public function ajax_get_data(){
    var_dump($_POST);
    return;
}

在本例中,查看从服务器返回的原始数据,检查器显示如下:

array(0){
}

服务器实际上没有接收到附加的请求数据,但是客户端浏览器报告它发送了正确的请求数据。

最近终于解决了这个问题。

补充一点上面文章缺少的细节,我后来才发现,这个问题是针对苹果设备(iOS/OS X)的。

看起来一定是苹果操作系统中有一个bug阻止了请求的通过。将iOS升级到iOS 10, OS X升级到macOS Sierra已经完全解决了这个问题。