URL-запросы на добавление данных POST в строку запроса - PullRequest
0 голосов
/ 26 ноября 2009

Я использую ExtJS для отправки запроса Ajax на страницу PHP на сервере, желая отправить параметры в виде переменных POST, а не в строке запроса.

Я включил случайный токен в строку запроса, поскольку у нас были проблемы с кэшированием на одном из наших прокси-серверов.

Ext.Ajax.request({
url: 'ajax.php?action=test&randToken=' + generateRandomToken(),
scope: this,
method: 'POST',
success: ajaxSuccess,
failure: ajaxFailure,
params:
{
    param1: 'test',
    param2: 'data',
}});

Приведенный выше код работает, когда я запускаю его локально (на коробке с Vista), и при проверке трафика с помощью Fiddler все выглядит нормально.

При работе на нашем промежуточном сервере Ubuntu (на сервере Zend) все запросы ajax также помещают данные POST в строку запроса.

Я даже не знаю, с чего начать искать причину этого. Это прокси или что-то в сети, или, может быть, настройка на промежуточном сервере?

1 Ответ

1 голос
/ 27 ноября 2009

Попробуйте поместить все свои параметры в ПОЧТУ. У вас не должно быть проблем с кэшированием, поскольку POST не должны кэшироваться.

Ext.Ajax.request({
  url: 'ajax.php',
  scope: this,
  method: 'POST',
  success: ajaxSuccess,
  failure: ajaxFailure,
  params: {
    action: 'test',
    param1: 'test',
    param2: 'data'
  }
});

Также попробуйте передать все параметры в строке запроса как GET. Если вы беспокоитесь о безопасности, обратите внимание, что и POST, и GET передаются по HTTP и могут быть легко обнаружены, если трафик не шифруется с помощью SSL.

Ext.Ajax.request({
  url: 'ajax.php?' + 
    Ext.urlEncode({
      action: 'test',
      randToken: generateRandomToken(),
      param1: 'test',
      param2: 'data'
    }),
  scope: this,
  method: 'GET',
  success: ajaxSuccess,
  failure: ajaxFailure
});

И, наконец, попробуйте удалить запятую из хэша params. Некоторые браузеры (IE) подходят, когда конечные запятые остаются в js.

...