#javascript #html #jquery
#javascript #HTML #jquery
Вопрос:
У меня много проблем с 307 Temporary Redirect
кодом состояния с помощью jquery.
У меня есть сервер apache, который при необходимости возвращает значение 307. 307 генерируется правильно (я вижу это с помощью firebug или трассировки wireshark), но, похоже, я не могу заставить перенаправление сработать.
$.ajax({
url: someURL,
type: 'GET',
processData: false,
data: someData,
cache: true,
timeout: 5000,
statusCode: {
307: function() {
alert('307'); // this does NOT get called
}
},
error: function(request, status, error){
try {
console.log(request.getAllResponseHeaders());
}
catch (err) { }
},
success: function(data, textStatus, response){
try {
console.log(response.getAllResponseHeaders());
}
catch (err) { }
});
Я хотел проверить заголовки, чтобы я мог перенаправлять с помощью getAllResponseHeaders()
метода. Это отлично работает для 200, но 307 никогда не срабатывает (в обработчике success
nor error
)
Одна вещь, которую я заметил при использовании Firebug для проверки трафика, заключается в том, что сразу после перенаправления на сервер отправляется ajax GET
с URL перенаправления! Однако это приводит к сбою.
Итак, что получается?
Редактировать: я пробовал это с jquery 1.5.1 и 1.6.1
Комментарии:
1. Убедитесь, что тело вашего HTTP-ответа содержит хотя бы пробел. Это поможет улучшить работу браузеров. Существует дополнительный вызов Firefox ‘Live HTTP Headers’, который может помочь в отладке этого. Вы используете jQuery версии 1.5 или выше, правильно?
2. @ Teddy. Я пробовал это с jquery 1.5.1 и 1.6.1. Кроме того, вся HTML-страница перенаправления возвращается с 307
Ответ №1:
Что ж, я провел еще некоторое исследование, и оказалось, что 307 автоматически обрабатывается браузером и не может быть перехвачен jquery.
В итоге я использовал другой StatusCode для выполнения перенаправления ( 410 Gone
).
Возможно, это не лучшее решение, но у меня нет доступа к коду сервера apache.