У меня есть веб-приложение, размещенное за внутренней сетью компании. Для всех пользователей, которым необходим удаленный доступ, текущее решение состоит в том, чтобы они подключались через 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){
}
Сервер фактически не получает прикрепленные данные запроса, но браузер клиента сообщает, что отправил правильные данные запроса.
Наконец-то удалось решить эту проблему недавно.
Чтобы добавить немного деталей, отсутствующих в вышеприведенном посте, о котором я узнал позже, проблема была связана с Apple Devices (iOS / OS X).
Похоже, в Apple OS была ошибка, которая не позволяла запросам проходить все время. Обновление iOS до iOS 10 и OS X до macOS Sierra полностью решило проблему.
Других решений пока нет …