| Uch |
|
|---|---|
|
Пытаюсь передать запрос в ajax сценарий php из js скрипта. В ответ постоянно получаю ошибку, что страница не найдена. Адрес 100% верный - проверял через адресную строку и получал ответ через echo в сценарии. Скрипт передает в т.ч. cot_xg() |
| Wadik |
|
|---|---|
|
Может это нужно http://www.cotonti.com/forums?m=posts&q=7004 |
| Uch |
|
|---|---|
|
Неа |
| Moool13 |
|
|---|---|
|
Uch, приведи код, который отправляет данные. |
| Uch |
|
|---|---|
|
Отправляет flash, по этому не могу привести код. Добавлено 2 минуты спустя: Забыл упомянуть, что ошибка возникает при использовании метода POST. При GET ошибка отсутствует. Добавлено 2 минуты спустя: Ошибка:
Статус в консоли FireBug : 403 Forbidden |
| Moool13 |
|
|---|---|
|
Uch, попробуй cot_xg() заменить на {PHP.sys.xk} (или &x={PHP.sys.xk}). |
| Alex300 |
|
|---|---|
|
При передаче POST запроса параметр x тоже должен прийти через POST. Иначе получим Forbidden. Защита движка от прямой передачи данных с другого хоста (от ботов) Например при выводе формы этот параметр добавляется к форме автоматически скрытым полем ввода. Получить его через JavaScript, для отправки Ajax запроса можно, например, так:
var x = $('input[name="x"][type="hidden"]').first().val();
Сам запрос при этом будет выглядеть примерно вот так:
$.post('index.php?e=some_ext&a=ajxGetChildValues',
{parent_dicId: pDicId, parent_dicValue: pDicValue, x: x },
function(data) {
// Обработка полученных данных
}, 'json');
(Важно последнее x: x) Ну или если отправляете саму форму через POST при помощи функции jQuery .serialize() ничего дополнительно делать не надо. Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english... Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/ |
| Uch |
|
|---|---|
|
Спасибо! Буду пробовать. |
| Macik |
|
|---|---|
|
Алекс не совсем прав, параметр «Х» при Пост запросе (при услови, что это аякс запрос) можно передавать как пост параметром, так и в строке запроса (гет параметром). Для убедительности можно глянуть строки 568-572 файла common.php. ----- С описанной проблемой сталкивался когда прикручивал к одному из сатов флэшовый аякс загрузчик файлов. Бился долго и параметр Х передавал, и другие варианты пробовал. Оказалось, что он (загрузчик) работает в 2 этапа, первым делает запрос на наличие файла (и этот запрос отрабатывает нормально с Х параметром), а делее идет собственно загрузка файла, в которой он обращается «напрямую» и параметров не передает. Решил в конце концов, примерно так, как описано в приведенной выше ссылке: т.е. повесил на хук «init» проверку входящего запроса, если это флэш загрузчик - отключаем проверку XSS:
if ($_SERVER['HTTP_USER_AGENT']=='Shockwave Flash') {
define('COT_NO_ANTIXSS', TRUE);
}
Это упрощенный код. для надежности надо еще проверять прочие параметры запроса.
https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |