2015-07-17 3 views
-1

Это очень странная проблема, которая сводит меня с ума в течение нескольких часов. Я хочу отправить строку JSON на PHP с помощью JQuery POST.Отправка строки JSON с использованием JQUERY POST возвращает 403 запрещено

Отрывок используется для размещения:

<script> 
$(document).ready(function(){ 
    $.post('/test.php', 
    { 
      results: '{"having"}' 
    }, 
    function(data, textStatus) { 
       alert(data); 
    }); 
}); 
</script> 

Я не знаю, почему отправив слово «имеющий», как JSON строка не работает. Это зарезервированное слово или что-то еще? Код очень прост. Файл test.php есть. Все выглядит хорошо.

Я получаю это в журнале консоли:

POST http://domain.com/test.php 403 (Forbidden) 
+0

Требуется ли сервер для входа в систему или какой-либо другой формы аутентификации? Почему вы считаете, что слово 'have' в данных вызывает проблему? –

+0

Не следует ли передавать передаваемое значение через 'data: '{" having "}'', а не 'results'? –

+2

Это незаконно json anyways. '{}' - это объект, который ДОЛЖЕН иметь формат '{" key ":" value "}'. –

ответ

3

странно. Из приведенной информации ниже приведены мои наводящие вопросы ...

  • Является ли POST попыткой доступа к правильному URL-адресу в вашем приложении?
  • Является ли зависимым от роли на основе имен URL-адресов?
  • Есть ли у вашего приложения какой-либо CSRF-маркер безопасности, который вы пропустили в своем запросе?
  • Есть ли какой-либо связанный с безопасностью запрос перехватчик, ищущий SQL-запросы в ключевых словах для поиска, чтобы запретить SQL-инъекцию? (Потому что having - это ключевое слово SQL.)

Надеюсь, это поможет.

+0

Я начал чувствовать, что это связано со словом «HAVING» и SQL-инъекцией как отправкой того же слова в двойные кавычки, подобные этому », имея« 'все равно будет проблемой, и это известно что подзапросы используются в двойных кавычках, подобных этой для SQL-инъекции, как вы указали, но я не уверен, что это настоящая проблема или нет :( –

+0

Ваше упоминание слов «тестирование фактического сценария производства» (в комментариях) дал мне эту идею. Я тоже не уверен, если это действительно первопричина. Это было просто разумное предположение. – SarathChandra

+0

ЧЕЛОВЕК, ВЫ ПРОСТО SMART ***: DI пытался с другими словами SQL, такими как «SELECT», и он по-прежнему блокируется! Тогда я попробовал один и тот же скрипт на другом веб-хосте, и он работал правильно! Итак, это защита (хотя я считаю это глупой) мерой для защиты от SQL-инъекции. Решение состоит в том, чтобы пропускать двойные кавычки. Тем не менее, я попрошу хозяина o отключите эту функцию, если это возможно, поскольку я использую подготовленные операторы со связыванием, чтобы избежать инъекции SQL, и нет необходимости в этой запутанной функции. –

1

Try убегая котировки

$(document).ready(function(){ 
    $.post('/test.php', 
    { 
      results: "{\"having\"}" 
    }, 
    function(data, textStatus) { 
       alert(data); 
    }); 
}); 
+0

, который ВСЕГДА был бы незаконным json ... –

Смежные вопросы