Как сделать ссылку на предыдущую веб-страницу в моей программе Perl CGI? - PullRequest
0 голосов
/ 06 октября 2010

У меня есть сетка, в которой есть ссылка на следующую страницу, и у меня есть кнопка, чтобы вернуться к сетке с текущей страницы.До сих пор я использовал этот метод для перехода назад, т.е.

     <INPUT TYPE="BUTTON" VALUE="Back to Datagrid" onClick="history.go(-1);">

Но я столкнулся с некоторыми проблемами при навигации, когда у меня были другие ограничения, поэтому я обнаружил что-то вроде:

    $exit = $ENV{'HTTP_REFERER'};
    <INPUT TYPE="BUTTON" VALUE="Back to Datagrid" onClick="$exit">

Но это не работает.Я понятия не имею, почему и в чем разница между этими двумя методами?

1 Ответ

4 голосов
/ 06 октября 2010

Первый метод пытается продублировать функцию кнопки «Назад».

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

Лучшим подходом будет разработка URI, к которому вы хотите перейти (предположительно, на основе данных, которые вы использовали для построения текущей страницы) и созданияобычная прямая ссылка на него (<a href...)… и позволяет пользователю использовать встроенную кнопку «Назад» в своем браузере, если он хочет вернуться назад.Этот подход:

  • Не потерпит неудачу, если JS недоступен
  • Не удастся, если их браузер не отправит необязательный заголовок HTTP
  • Wonне путайте пользователей, заставляя историю их браузера работать неожиданным образом

Я не уверен, но я подозреваю, что есть риск, что кто-то может создать URI и разместить ссылку на него на вашей страницев том числе "<script>....Затем пользователь может щелкнуть эту ссылку, получить URI страницы, с которой он пришел, вставленной на страницу, и познакомить вас с атакой XSS.(Я думаю, что это не получится, потому что некоторые из этих символов должны быть в кодировке URI, но я бы не хотел рисковать - всегда устанавливайте стандартные средства защиты от XSS всякий раз, когда у вас есть данные, поступающие извне вашей системы и обратно на вашу страницу)

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