Как мне инкапсулировать ajax-запрос, используя jQuery? - PullRequest
2 голосов
/ 17 августа 2011

Я внедряю приложение PHP, я активно использую AJAX в формах для отправки и получения значений. типичная функция jQuery, которую я реализую, -

(function($){
$.fn.saveCountry = function(destinationUrl) {
    this.click(function(){
        var formData = $('form').serialize();
        $.ajax({
            type: 'POST',
            url:  'path/to/files/models/directory/process.php',
            data: 'option=savecountry&'+formData,
            success: function(msg){
                if(msg === 'empty') {
                    alert('Required Values Missing');
                } else if(msg == 'DR'){
                    alert('Duplicate Entry Found');
                } else {
                    destinationUrl(msg);
                }
            }
        });
    });
}
}($));

проблема с вышеуказанной функцией, например, в том, что она представляет структуру приложения моего приложения. объект url: 'path/to/files/models/directory/process.php', раскрывает информацию о структуре каталогов, которую я использую. Это своего рода угроза, поскольку любой, имеющий доступ к консоли, сможет отслеживать, что происходит с запросом, и может неправильно его использовать. Могу ли я в любом случае скрыть эти данные от внешнего мира?

спасибо.

Ответы [ 3 ]

3 голосов
/ 17 августа 2011

В конечном счете, нет.

Пользователь всегда сможет узнать URL-адрес запроса ajax, если пожелает.

Это может быть так же просто, как открыть firebug и посмотретьзапросы, которые сделаны.

Что бы я предпочел, это какая-то абстракция URL, такая как перезапись URL, чтобы скрыть физическую структуру вашей файловой системы.Таким образом, у вас не будет особой заботы о том, чтобы люди видели ваши URL.

2 голосов
/ 17 августа 2011

Я не программист PHP (коснулся этого много лет назад), поэтому я дам вам общий ответ.

Просто создайте прокси-страницу, которая скрывает внутреннюю работу вашего приложения. Прокси-страница - это просто переход между браузером и самим приложением. Он выполняет преобразование идентификатора, который вы передаете вместе с вызовом AJAX, в функцию в приложении (это может сделать больше, чем это, но я стараюсь сохранить это простым). Он передает данные, которые вы указали при вызове AJax. Прокси-сервер отправит обратно любые данные, переданные из функции в браузер.

Код JavaScript будет выглядеть почти так же, как код, который у вас уже есть. Единственными изменениями будет то, что url будет URL вашей прокси-страницы, а data также будет содержать идентификатор со значением, которое соответствует значению функции, которую вы хотите выполнить в прокси.

Все ваши AJAX-вызовы могут маршрутизироваться через эту страницу прокси, поскольку каждая функция будет иметь уникальный идентификатор.

Это немного запрограммировано заранее, но когда вы сделали это один раз, вы можете повторно использовать части кода в будущих проектах.

0 голосов
/ 17 августа 2011

Нет. Вам нужно написать свой серверный код таким образом, чтобы произвольные запросы не вызывали никаких проблем.

...