我有一个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已经完全解决了这个问题。