【问题标题】:AJAX Post Request over VPN stripping request data通过 VPN 剥离请求数据的 AJAX 发布请求
【发布时间】:2016-08-26 19:58:52
【问题描述】:

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

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

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

这就是发生的事情,浏览器进行了正确的调用,并附加了所有的帖子数据。服务器正在接收请求,没有数据,然后根据需要发回失败。我试过只是回显 $_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){

}

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

【问题讨论】:

  • $_POST 只会为客户端->服务器设置。它不涉及服务器->客户端响应,因为它是一个 PHP 构造,并且您的客户端没有运行 PHP。
  • 您是否在内部网络和 VPN 上测试过完全相同的请求以验证没有问题?也许用户在 VPN 上执行的任务与他们在办公桌上执行的任务不同,这就是导致问题的原因。我已经看到这种情况发生了很多。 “80% 的 AJAX 请求失败”是我怀疑的原因
  • @Mark $_POST 变量在需要过滤数据时为空。
  • @Steve 是的,内部站点运行良好,每天有数百名用户发出数千个请求。 VPN 完全相同的请求无法将发布信息传递到服务器,并且由于需要返回结果,因此它返回失败。
  • VPN 本身会剥离请求的数据包似乎很奇怪。 VPN 请求是否以任何方式重新路由?例如,在 Apache 中不使用 [P] 的重定向会剥离请求正文。如果不这样做,我几乎没有想法。

标签: php jquery ajax vpn


【解决方案1】:

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

补充一下上面帖子中遗漏的一些细节,我后来才发现,这个问题是 Apple 设备 (iOS/OS X) 所特有的。

看起来苹果操作系统中一定存在一个错误,阻止请求一直通过。 将 iOS 更新到 iOS 10 并将 OS X 更新到 macOS Sierra 已完全解决了该问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多