PJ-запросы AJAX https с использованием jquery не работают в Firefox - PullRequest
4 голосов
/ 28 февраля 2009

У меня есть простой список записей в таблице HTML со ссылкой для удаления для каждой строки. Ссылка на удаление снимает запрос поста AJAX на фиксированный URL, который выглядит следующим образом: "/delete/record/5"

Запрос AJAX создается с помощью вызова .ajax() jquery с сообщением POST при запуске на сервере, который использует https. Этот вызов не выполняется в Firefox 3 на архитектурах OSX / Windows. Он работает во всех других браузерах, которые я тестировал (OSX / Windows: Chrome, Safari, IE7.)

Запросы поступают с сайта https и отправляются на тот же сайт https. Но я думаю, что где-то во время процесса исходный запрос начинается с http, и на нашем сервере происходит попытка перенаправления, чтобы отправить его с http-> https, и Firefox отклоняет это перенаправление как некий тип подделки.

Кто-нибудь имел опыт выполнения .ajax() вызовов JQuery на сайте https с Firefox? Я заметил кое-что странное, когда запрос содержит аргументы «?var=xxx» в URL-адресе, и кажется, что запрос работает чаще, чем если у него нет этих переменных.

Ответы [ 5 ]

13 голосов
/ 28 февраля 2009

Похоже, вы получаете ошибку HTTP 411. . Эта ошибка может произойти, если вы отправляете запрос POST без data.

Чтобы это исправить, добавьте пустой объект ({}) к свойству data в ваши запросы:

$.ajax({ 
    url: url, 
    type: 'POST', 
    data: {}, // <- set empty data 
    success: function(data, textStatus) { 
        // do something 
    } 
}); 
1 голос
/ 28 февраля 2009

Возможно, вы сможете установить расширение Firefox Live Headers, которое даст вам доступ ко всей информации в ваших запросах / ответах. Таким образом, вы будете ловить любые различия.

1 голос
/ 28 февраля 2009

Это кажется маловероятным ... не то чтобы я сомневался в тебе. Но я бы посоветовал загрузить Wireshark и наблюдать за вашим HTTP-трафиком, чтобы увидеть, не можете ли вы изолировать проблему. Вы сможете сравнить запрос, отправленный другими браузерами, с запросом, отправленным FF3, и посмотреть, какой ответ возвращается. Если это действительно проблема с JQuery, который не работает должным образом в FF3, вы можете изменить часть кода для правильной работы.

0 голосов
/ 28 марта 2009

Я получил $.post для работы в Firefox, отправив пустой объект в качестве параметра data. Обратите внимание на пустые скобки для параметра 2:

$.post(url, {}, function(response){ alert('done'); }, "json");
0 голосов
/ 28 февраля 2009

У вас есть какие-либо плагины или скрипты GreaseMonkey, установленные на вашем Firefox?

У меня никогда не было проблем с запросами jQuery AJAX по HTTPS. Я бы посоветовал взглянуть на то, что Firebug появляется, если вы еще этого не сделали.

...