Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2016, 17:51
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Как запретить meta - http-equiv="refresh"?
HTML-код типа
<meta http-equiv="refresh" content="10;URL=http://site.net">
заставляет перегрузиться страницу (в данном примере) через 10 секунд.
Можно ли с помощью javascript пресечь эту перезагрузку?

Как известно, в теге meta content устанавливает значение атрибута, заданного с помощью name или http-equiv, а
http-equiv предназначен для конвертирования метатега в заголовок HTTP.

Но я не пойму, чей это атрибут "refresh"? То есть, можно ли его очистить, убить напрочь, чтобы перезагрузка не произошла?

Решение с обработкой события onbeforeunload мне видится бестолковым.
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2016, 18:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Маэстро
Но я не пойму, чей это атрибут "refresh"?
А страница чья?
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2016, 19:08
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

Маэстро,
Решали подобную задачу путём заворачивания в noscript
<noscript>
    <meta http-equiv="refresh" content="10;URL=http://site.net">
</noscript>


Насчёт JS решения не в курсе
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2016, 20:23
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от laimas Посмотреть сообщение
А страница чья?
Страница моя, сайт мой. Не вдаваясь в причины, просто представьте, что кто-то каким-то образом может вписать в мою страницу тег "meta" с рефрешем страницы (просто в DIV). И мне надо это локально (без привлечения сервера) остановить. Как говорится, по нажатию button.
К сожалению, как только сделано
DIV.innerHTML = '<meta http-equiv="refresh" content="10;URL=http://site.net">';
, так браузер запускает таймер до взрыва...
Ответить с цитированием
  #5 (permalink)  
Старый 09.04.2016, 20:56
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Alexander Belov Посмотреть сообщение
Решали подобную задачу путём заворачивания в noscript
<noscript>
    <meta http-equiv="refresh" content="10;URL=http://site.net">
</noscript>
Вы меня обрадовали и опечалили. Для начала спасибо за гениалное решение. Мне бы такое и в голову не пришло, т.к. я не понимаю, какая связь между тегом запрета выполнения сценариев <noscript> и HTML-тегом <meta> (в котором как бы нет никакого скрипта)? Можете объяснить?
Да это работает. Проверил только что в IE 11 и FireFox. К моему удивлению это не работает в Gooogle Chrome.
Ответить с цитированием
  #6 (permalink)  
Старый 09.04.2016, 21:18
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

Маэстро,
Noscript - это не запрет выполнения сценария. Содержимое тега отобразится / сработает, если браузер не поддерживает скрипты или они отключены. Значит, если подключены, то содержимое игнорируется.
MDN

Насчёт Chrome пишут, что это известный баг. Иногда это "лечат" путём перезагрузки, но в Вашем случае, получается, это не выход совсем.
Ответить с цитированием
  #7 (permalink)  
Старый 09.04.2016, 22:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Маэстро
просто представьте, что кто-то каким-то образом может вписать в мою страницу тег "meta" с рефрешем страницы (просто в DIV).
Даже так, разрешить пользователям вставлять подобное на свои страницы? А об htmlspecialchars что не слышали? А если не разрешать, то не эту проблему решать надо, а искать "дыру" в своем коде.
Ответить с цитированием
  #8 (permalink)  
Старый 09.04.2016, 22:17
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от laimas Посмотреть сообщение
Даже так, разрешить пользователям вставлять подобное на свои страницы?
-Да. Но система контроля должна ликвидировать потенциально вредные.

Сообщение от laimas Посмотреть сообщение
А об htmlspecialchars что не слышали?
Слышали. Но в предыдущем сообщении я написал "без привлечения сервера". То есть без PHP, без отправки на сервер. Как я и просил решить задачу локально на javascript.

Сообщение от laimas Посмотреть сообщение
А если не разрешать, то не эту проблему решать надо, а искать "дыру" в своем коде.
Именно этим я и занимаюсь. Все дыры перекрыты за исключением. этого рефреша.
Кстати, в одном из продуктов Гугла есть именно эта уязвимость. Но в Гугл я писать не буду.
Ответить с цитированием
  #9 (permalink)  
Старый 09.04.2016, 22:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Маэстро
Но в предыдущем сообщении я написал "без привлечения сервера". То есть без PHP, без отправки на сервер. Как я и просил решить задачу локально на javascript.
А позвольте вас спросить каким же образом минуя сервер эта пакость появляется на ВАШИХ страницах? А если не минуя сервер и страницы ваши, а значит и обработкой входных данных рулите Вы. А если вы рулевой, то какого извините хрена эту проблему должен решать клиент?
Ответить с цитированием
  #10 (permalink)  
Старый 09.04.2016, 22:57
Аспирант
Отправить личное сообщение для Madzal Посмотреть профиль Найти все сообщения от Madzal
 
Регистрация: 18.02.2016
Сообщений: 62

как вариант
<meta http-equiv="refresh" content="10;URL=http://site.net">
<script>window.stop();</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как запретить срабатывание mouseout axmed2004 Events/DOM/Window 1 09.12.2014 22:50
Как запретить кликать на видео codeby Элементы интерфейса 1 10.11.2014 14:28
как запретить Java на телефоне? Александр1986 Общие вопросы Javascript 6 09.08.2014 03:54
Как посчитать буферизацию видео при http live streaming ozzon91 Javascript под браузер 1 16.07.2014 19:16
Как запретить уход из фрейма в top-окно? sturm Общие вопросы Javascript 6 20.04.2008 04:20