Разница между encodeURL и encodeRedirectURL - PullRequest
15 голосов
/ 12 января 2011

javadoc для javax.servlet.http.HttpServletResponse немного расплывчато в разнице между теми правилами, которым следуют encodeURL и encodeRedirectURL, есть ли примеры того, какие именно эти правила существуют?Когда выходные данные encodeURL будут отличаться от encodeRedirectURL?

Для конкретного примера я уже генерирую URL перенаправления, который буду использовать с response.sendRedirect(url).Я получаю этот URL, который уже закодирован, но я хочу добавить к нему параметр, значение которого является другим URL:

param2=http://google.com

Какую из двух функций я использую для кодирования этого?

Ответы [ 2 ]

14 голосов
/ 26 сентября 2013

Salam Alekom Abduallah, я искал и искал ответ, который я знал, что найду его либо в stackoverflow, либо в coderanch, и там я нашел ответ от Чарльза Лайонса, автора книги, прямо сейчас в моей рукеэто было веселое совпадение.

отправлено 09.08.2008 11:41 Точно - разница в том, что encodeURL всегда записывает идентификатор сессии в URL (если требуется, например, потому что куки отключены), тогда как encodeRedirectURL содержит дополнительную логику дляопределите, желательно ли записывать идентификатор сеанса. Это действительно плохая идея, например, дать иностранным веб-сайтам идентификатор сеанса, поскольку с тех пор они могут выдавать себя за сеанс вашего пользователя.Следовательно, encodeRedirectURL будет помещать jsessionid в URL-адрес только в том случае, если этот URL-адрес находится в текущем веб-приложении, и не будет перезаписывать иначе.; SCWCD 1.4b, апрель 2004 г.) Автор OCEJWCD Study Companion для экзамена Oracle 1Z0-899 (ISBN 0955160340)

также я нашел этот ответ , также опубликованный ранее,

опубликовано 19.04.2006 8:02 Цитировать Сообщить модератору Привет,

encodeURL используется для кодирования URL для отслеживания сеанса в forward и включения механизма.EncodeRedirectURL кодирует указанный URL-адрес для использования в методе sendRedirect.

Основное различие между ними состоит в том, что реализация метода encodeRedirectURL включает логику для определения необходимости кодирования идентификатора сеанса в URL-адресе в случаекогда вы перенаправляете URL-адрес в другой контекст, где информация о сеансе не требуется или недействительна.Метод encodeURL не добавляет идентификатор сеанса, если включены файлы cookie.В дополнение к этому encodeRedirectURL не добавляйте информацию о сеансе, если URL-адрес перенаправлен в другой контекст (веб-приложение).Поскольку правила для этого определения могут отличаться от правил, используемых для принятия решения о том, кодировать ли нормальную ссылку, этот метод отделен от метода encodeURL.

Надеюсь, это поможет вам.

Спасибо

Нарендра Дханде

7 голосов
/ 12 января 2011

encodeURL() используется для всех URL в выходных данных сервлета.Это помогает идентифицировать идентификаторы сессии с помощью URL.

encodeRedirectURL() используется только с res.sendRedirect.Он также используется для кодирования идентификаторов сеансов с URL, но только при перенаправлении.

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