Хидер

Список разделов phpBBex 1.x (поддерживается) Пожелания 1.x

Описание: В phpBBex 1.x чего-то не хватает? Напишите об этом здесь, и мы постараемся исправиться.
Правила раздела: Одна тема — один запрос новой возможности. Обязательно формируйте внятный заголовок, максимально отражающий суть вашей идеи. Также приведите примеры, где предлагаемая вами возможность будет актуальна.
Модератор: Поддержка

Сообщение #1 factotum » 26.04.2013, 08:28

строка <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" /> имеет спорные моменты с валидатором.

Есть предложение реализовать с помощью Апача:
Код: Выделить всё
<IfModule mod_headers.c>
   Header set X-UA-Compatible "IE=Edge,chrome=1"
   <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
      Header unset X-UA-Compatible
   </FilesMatch>
</IfModule>

Или избирательно:
Код: Выделить всё
<IfModule mod_headers.c>
   <FilesMatch "\.(php|html)$">
      Header set X-UA-Compatible "IE=Edge,chrome=1"
   </FilesMatch>
</IfModule>
factotum
Автор темы
Откуда: Люксембург
Репутация: 234
С нами: 11 лет 11 месяцев

Сообщение #2 Sumanai » 02.06.2013, 02:53

factotum:Или избирательно:

Если сделать условие, чтобы добавлялось только для ИЕ (по юзерагенту), будет вообще отлично!
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #3 Sumanai » 03.06.2013, 17:18

Сам спросил, сам и сделал. Но я не уверен, так что прошу проверить на корректность. Вот:
В файлах php, выдающих содержимое пользователю (index.php, viewforum.php и т.д.) найти " // Output page " и добавить после
Код: Выделить всё
$browser = (!empty($_SERVER['HTTP_USER_AGENT'])) ? htmlspecialchars((string) $_SERVER['HTTP_USER_AGENT']) : '';
if (preg_match ("/MSIE/",  $browser))
{
header('X-UA-Compatible: IE=Edge,chrome=1');
Соответственно из шаблона невалидную строчку удалить.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #4 factotum » 04.06.2013, 17:57

Sumanai, если не ошибаюсь, строка для пользователей IE с Chrome Frame. Не знаю, насколько много таких, чтобы думать об этом.
factotum
Автор темы
Откуда: Люксембург
Репутация: 234
С нами: 11 лет 11 месяцев

Сообщение #5 Sumanai » 04.06.2013, 18:07

factotum:Sumanai, если не ошибаюсь, строка для пользователей IE с Chrome Frame.

Первая часть IE=Edge для всех пользователей ИЕ, чтобы он не переходил в режим совместимости со старыми версиями (попутно выдавая сообщение о просмотре в режиме совместимости), так что вполне актуально.

Добавлено спустя 4 минуты 11 секунд:
Вот, посмотрел, у Chrome Frame при загрузке флеймов вот такой юзерагент
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; chromeframe/11.0.660.0) AppleWebKit/534.18 (KHTML, like Gecko) Chrome/11.0.660.0 Safari/534.18
При загрузке обычных страниц в юзерагенте присутствует MSIE.
Так что надо добавить chromeframe в строку определения браузера, а лучше ИЕ посылать "X-UA-Compatible: IE=Edge", а Chrome Frame "X-UA-Compatible: IE=Edge,chrome=1"
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #6 VEG » 04.06.2013, 21:06

На самом деле бессмысленно так переживать по поводу валидации. Однако, перенёс этот флаг из HTML в заголовки HTTP. Изменение в репозитории.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #7 Sumanai » 04.06.2013, 21:20

VEG:Однако, перенёс этот флаг из HTML в заголовки HTTP.

Так и знал, что где- то можно это добавить централизованно.
Отправку по условию юзерагента, как я понял, вы посчитали лишней?
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #8 VEG » 04.06.2013, 21:35

Любые проверки UserAgent — ненадёжный код. Например, после выхода IE11 компания Microsoft планирует заменить подстроку MSIE на просто IE — в результате ваш код перестанет работать. Также не исключены ситуации, когда пользователь использует какую-то обёртку над IE, которая подменяет UserAgent. Меньше кода, меньше потенциальных проблем, всего несколько лишних байт в ответе.

Если бы, например, Chrome и новая Opera почистили бы свой UserAgent от хлама, то экономия трафика в байтах была бы в несколько раз больше, чем занимает этот небольшой заголовок :)

Добавлено спустя 2 минуты 35 секунд:
На самом деле в старом решении с хранением этого флага в HTML было одно преимущество: после сохранения страницы на диск он сохранялся бы. Но это слишком редкий вариант использования, да и ещё в паре с IE, поэтому я и не сопротивлялся особо с переносом этого флага в HTTP заголовки.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 11 лет 11 месяцев

Сообщение #9 Sumanai » 04.06.2013, 21:44

VEG:Любые проверки UserAgent — ненадёжный код.

Действительно. Принимаю.

VEG:Если бы, например, Chrome и новая Opera почистили бы свой UserAgent от хлама, то экономия трафика в байтах была бы в несколько раз больше, чем занимает этот небольшой заголовок :)

Ну да, я выложил UserAgent IE с Chrome Frame- едва в строку поместилось))
Ну и 31 байт сэкономили на обёртке <meta http-equiv= /> :toothless:
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #10 factotum » 18.06.2013, 22:04

можно уделить внимание iFrame Injection:
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-XSS-Protection:1; mode=block
factotum
Автор темы
Откуда: Люксембург
Репутация: 234
С нами: 11 лет 11 месяцев

Сообщение #11 Xisp » 18.06.2013, 23:32

factotum:можно уделить внимание iFrame Injection:

Куда предлагаете вставлять этот код? Туда же, где и X-UA-Compatible, то есть для php файлов? Этого же должно быть достаточно.
Xisp
Репутация: 9
С нами: 10 лет 11 месяцев

Сообщение #12 factotum » 19.06.2013, 10:04

Xisp:Туда же, где и X-UA-Compatible
да
Код: Выделить всё
header("X-Content-Type-Options:nosniff");
header("X-Frame-Options:SAMEORIGIN");
header("X-XSS-Protection:1; mode=block");
header("X-UA-Compatible:IE=Edge,chrome=1");
factotum
Автор темы
Откуда: Люксембург
Репутация: 234
С нами: 11 лет 11 месяцев

Сообщение #13 ChupOK » 31.10.2013, 22:52

Не усложняйте себе задачу.
Внутри <head> вставьте:
<!--[if lt IE 9]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
И все.
ChupOK
Гость

Сообщение #14 Sumanai » 31.10.2013, 23:38

Поздно, уже давно поменяли.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #15 HD321kbps » 21.09.2016, 23:23

ChupOK:Внутри <head> вставьте:
<!--[if lt IE 9]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
И все.
Sumanai:Поздно, уже давно поменяли.

А в phpBBex 2.0.4 нет)
HD321kbps M
Аватара
Откуда: Армянск
Репутация: 376
С нами: 11 лет

Сообщение #16 Sumanai » 22.09.2016, 00:04

На месте всё, заголовок отдаётся в заголовках, а не html коде, как предлагал ChupOK.
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца

Сообщение #17 HD321kbps » 22.09.2016, 00:32

Имел ввиду с условием комментарием <!--[if lt IE 9]> для валидности. Или нефига не поменяется?
HD321kbps M
Аватара
Откуда: Армянск
Репутация: 376
С нами: 11 лет

Сообщение #18 Sumanai » 22.09.2016, 05:20

Действительно, что он там забыл...
Sumanai M
Аватара
Репутация: 1677
С нами: 11 лет 2 месяца


Вернуться в Пожелания 1.x



cron