AJAX https POST-запросы с использованием jquery не работают в Firefox
Вопрос
У меня есть простой список записей в таблице HTML со ссылкой на удаление для каждой строки.Ссылка на удаление отправляет запрос на публикацию AJAX на фиксированный URL-адрес, который выглядит следующим образом:"/delete/record/5
"
Запрос AJAX создается с использованием jquery. .ajax()
вызов с сообщением POST при работе на сервере, использующем https.Этот вызов не работает в Firefox 3 на архитектурах OSX/Windows.Он работает во всех других браузерах, которые я тестировал (OSX/Windows:Chrome, Safari, IE7.)
Запросы поступают с сайта https и переходят на тот же сайт https.Но я думаю, что где-то во время процесса исходный запрос начинается с http, и на нашем сервере происходит попытка перенаправления, чтобы отправить его с http->https, и Firefox отклоняет это перенаправление как некую подделку.
Был ли у кого-нибудь опыт выполнения .ajax()
JQuery вызывает сайт https с помощью Firefox?Я замечаю что-то странное: если в запросе есть "?var=xxx
"аргументы в URL-адресе, запрос, похоже, работает чаще, чем если бы он не имел этих переменных.
Решение
Похоже, вы получаете ошибку HTTP 411..Эта ошибка может произойти, если вы отправляете POST
запрос без каких-либо data
.
Чтобы это исправить, добавьте пустой объект ({}
) к data
недвижимость по вашим запросам:
$.ajax({
url: url,
type: 'POST',
data: {}, // <- set empty data
success: function(data, textStatus) {
// do something
}
});
Другие советы
Это кажется маловероятным...не то чтобы я в тебе сомневался.Но я бы посоветовал загрузить Wireshark и посмотреть ваш HTTP-трафик, чтобы увидеть, сможете ли вы изолировать проблему.Вы сможете сравнить запрос, отправленный другими браузерами, с запросом, отправленным FF3, и посмотреть, какой ответ возвращается.Если проблема действительно в том, что jQuery не работает правильно в FF3, вы можете изменить часть кода, чтобы он работал правильно.
Вероятно, вы можете установить расширение Firefox Live Headers, которое предоставит вам доступ ко всей информации в ваших запросах/ответах.Таким образом, вы сможете уловить любые различия.
Установлены ли в вашем Firefox какие-либо плагины или скрипты GreaseMonkey?
У меня никогда не было проблем с запросами jQuery AJAX по HTTPS.Я бы посоветовал взглянуть на то, что поджигатель появится, если вы еще этого не сделали.
я получил $.post
для работы в Firefox, отправив пустой объект в качестве data
параметр.Обратите внимание на пустые скобки для параметра 2:
$.post(url, {}, function(response){ alert('done'); }, "json");