Безопасно ли кросс-браузер отправлять перенаправление 302 обратно на ту же страницу, на которой вы находитесь? - PullRequest
2 голосов
/ 11 августа 2011

В некоторых случаях я хочу отправить перенаправление 302 обратно на ту же страницу.Например, если у меня возникла случайная ошибка хранилища данных, я мог бы перенаправить их на одну и ту же страницу, чтобы они автоматически повторили попытку.

Я проверил это в Firefox и Chrome, и все работает нормально, мне интересноОднако в других браузерах возникнут проблемы.

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Вы не можете ожидать, что это сработает в целом. HTTP-спецификация просто говорит

Клиент ДОЛЖЕН обнаруживать бесконечные циклы перенаправления,

но ничего о том, как это должно быть сделано. Это было бы в рамках стандарта, чтобы обнаружить при первом перенаправлении, что есть цикл и сразу же выдается ошибка.

(Кроме того, поскольку вы сервер, почему бы просто не повторить попытку самостоятельно?)

0 голосов
/ 11 августа 2011

Нет, вы не можете полагаться на идею, что ЛЮБОЙ браузер перезагрузит страницу с 302 по тому же пути. Некоторые следуют спецификации HTTP и предпочитают не повторять запрос, вместо этого сообщая пользователю, что он столкнулся с бесконечным циклом перенаправления.
По этой причине вам лучше использовать редирект местоположения JavaScript.

В конечном итоге вы должны позволить запросу пользователя ждать ответа столько времени, сколько необходимо для получения правильного ответа. Поэтому, если вы не можете получить доступ к хранилищу данных, ваше веб-приложение должно удерживаться на ответе на запрос, пока оно не сможет либо добраться до хранилища данных и сформировать ответ, либо время ожидания истечет через некоторое пороговое значение, которое вы выберете, и сообщит пользователю, что произошла ошибка скажем, 500 или 404.

Напомним, что 404 - это не GONE (410), и «ошибка 404 указывает, что запрошенный ресурс может снова стать доступным в будущем». A 503 может вас заинтересовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...