Как стать автором
Обновить

Комментарии 5

Спасибо!
Но, может быть, вы имели в виду, что CORS — это механизм, как раз разрешающий обращаться к ресурсам на других доменах?
Да, вы правы, спасибо. Поправили.
Я, конечно, не могу сказать, что очень хорошо разбираюсь в WP, но искренне не понимаю, почему вы не упомянули о wp_nonce.

Если уж статья об AJAX и WP, то тогда расскажите о методах маломальской защиты.
Спасибо за комментарий. wp_nonce упомянуто вот тут:
>> Существует функция check_ajax_referer, которая проверяет реферера (проверяет, откуда произошел запрос) и прерывает выполнение, если реферер какой-то «не такой». Эта функция умеет также проверять nonce. Подробнее можно почитать в соответствующей статье кодекса.

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

А вообще Всяческие number-at-once и контрольные суммы в AJAX-запросах в контексте WP — это тема, достойная отдельной статьи. Если есть интерес — в свободное время с удовольствием напишу/расскажу об этом ;-)
О, для меня это была больная тема, пока я не перевёл свой удобный класс для работы с AJAX под WP и не оформил его как плагин. Теперь никаких запарок — ставлю плагин и вперёд. Обращение из js выглядит так

var data = {
   ... некие данные ...
};
jxAction('название экшена', data);


обработчик в php выглядит так

add_action('jx_название экшена', function($jx){
    $data = $jx->data;
    .. обработка ...
    $jx->alert('Выдаём alert на стороне клиента');
    $jx->variable('varname', 'Задаём значение переменной js на стороне клиента');
    $jx->call('myfunc', array('Запускаем функцию js с заданными параметрами'));
    $jx->... есть ещё пяток полезных методов
});


Теперь геморрой, связанный с правильной обработкой ajax в wordpress позади, можно создавать сколь угодно сложные ajax-приложения и не париться насчёт обработки ошибок, кодирования многомерных массивов и проч и т.д. В общем очень удобно.

Всё это GPL и лежит тут: https://wordpress.org/plugins/ajax-manufactory/ Рекомендую попробовать, критика принимается.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий