Функция источника трафика доступна в службах статистики трафика. Источник трафика является концепцией для уровня посещения. Другими словами, когда посещение установлено, источником трафика на целевой странице является источник трафика посещения. Хотя существует много типов источника трафика, к сожалению, на основе JS сейчас есть только два способа получить источник трафика - Document.ReferRer и Window.Opener. Что более прискорбно, так это то, что есть не так много сценариев, что окно. Открытие подходит, и документ. Referrer настолько слаб, что невозможно точно определить источник трафика во многих сценариях.
Обзор документа. Referrer
С точки зрения использования, Document.Referrer надеется отслеживать поведение браузера. Если открыта страница A, то действия, которые могут произойти в браузере, включают операции пользователей и код JS.
Давайте сначала посмотрим на действия, которые пользователи могут выполнять при открытии страницы A:
| 1 | Введите адрес непосредственно в адресную строку |
| 2 | Ссылка на щелчок влево от страницы B и перейдите на страницу A |
| 3 | Щелкните правой кнопкой мыши Ссылку A со страницы B, чтобы открыть в новом окне |
| 4 | Щелкните правой кнопкой мыши Ссылку A со страницы B и откройте ее на новой вкладке |
| 5 | Перетащите ссылку A на адресную планку |
| 6 | Перетащите ссылку A в панель вкладок |
| 7 | Используйте кнопки вперед и назад и задний браузер |
Обратите внимание, что ссылка здесь относится к тегу <a>, но если есть событие или цель, это должно быть другое дело.
Возможные способы открыть страницу от JS:
| 1 | Изменить Window.location |
| 2 | Используйте Window.open |
| 3 | Нажмите Flash |
Выше приведены некоторые методы, чтобы клиент открыл страницу. Кроме того, если используется технология перенаправления сервера, страница A также может быть представлена посетителям.
Вот конкретный тест браузера. Если вышеуказанные ситуации приведены выше, как Document.ReferRer выполняет:
| Серийный номер | Сцена | IE8.0 | FF3.6 | FF4.0 | хром |
| 1 | Введите адрес непосредственно в адресную строку | "" | "" | "" | "" |
| 2 | Влево щелкните Ссылка A со страницы B, и страница A заменить страницу B (target = '_ self') | √ | √ | √ | √ |
| 3 | Связанная слева ссылка A со страницы B, открывается в новом окне (target = '_ blank') | √ | √ | √ | √ |
| 3 | Щелкните правой кнопкой мыши Ссылку A со страницы B, чтобы открыть в новом окне | √ | √ | √ | "" |
| 4 | Щелкните правой кнопкой мыши Ссылку A со страницы B и откройте ее на новой вкладке | √ | √ | √ | "" |
| 5 | Перетащите ссылку A на адресную панель с мышью | / | "" | "" | "" |
| 6 | Ссылка на перетаскивание мыши А на панель вкладок | "" | "" | "" | "" |
| 7 | Используйте кнопки вперед и назад и задний браузер | Держать | Держать | Держать | Держать |
| 8 | Измените window.location, чтобы открыть страницу A (тот же домен) | "" | √ | √ | √ |
| 9 | Откройте страницу A с помощью window.open | "" | √ | √ | √ |
| 10 | Нажмите Flash, чтобы открыть страницу A | ||||
| 11 | Сервер перенаправления на страницу A | "" | "" | "" | "" |
Где «» означает пустую строку, √ означает, что исходную страницу можно правильно оценить, и сохранить, означает, что рефератель, который не изменит страницу, когда вперед и назад не изменится. Из этой таблицы мы видим, что документ. Referrer может охватить около половины случаев. Тем не менее, для некоторых более часто используемых операций, таких как перетаскивание ссылки на панель вкладок с мышью, движущийся вперед и назад и т. Д., С ней нельзя обработать должным образом.
Источник документа. Referrer
Когда браузер запрашивает страницу A с сервера, он отправит HTTP -запрос. Заголовок этого запроса будет иметь атрибут рефере. После того, как сервер получает запрос, он может извлечь реферера в заголовку, чтобы определить, какую страницу посетитель инициировал запрос.
Вообще говоря, что является реферером в заголовке, отправленном браузером по запросу A, то каково значение Document.Referre после получения страницы A. Приведенный выше изображение - это заголовок, запрашивающий страницу A, и документ. Referre a http: //localhost/test/b.html.
Если заголовок не содержит ссылки, то при использовании Document.Reerre он будет назначен в качестве пустой строки.
О HTTPS -запросе
Если вы нажмете на ссылку HTTPS на обычной HTTP -странице, вы можете прикрепить информацию рефере к заголовку запроса HTTPS, а затем вы все равно можете использовать Document.Referre, чтобы получить обычную HTTP -страницу на странице HTTPS.
Точно так же, если вы нажимаете на другую ссылку HTTPS на одной странице HTTPS, вы можете прикрепить информацию реферата к заголовку запроса.
Однако, если вы нажмете на ссылку HTTP со страницы HTTP, к сожалению, отправленный заголовок запроса HTTP не может содержать информацию о HTTP -странице, которая может быть связана с мерой защиты для HTTP -страницы.
Поддельная информация о реферике
Согласно вышеуказанному описанию, Document.Referre получен из реферата в заголовке. Затем, если вы хотите изменить значение Document.Reerre, теоретически, вам нужно только изменить заголовок запроса. Вы можете заменить существующего реферера в заголовке на значение, которое вы хотите. Если он изначально не доступен, вы можете добавить реферера.
На стороне клиента подделка заголовка - очень простая вещь. Прежде чем отправлять HTTP -запрос на странице, вы можете использовать инструмент перехвата пакета для перехвата, а затем проанализировать информацию об заголовке и изменить референцию.
После поиска Firefox может быть легко изменен с помощью плагина RefControl. В любом случае, изменение источника трафика - это ветерок.
Page Force Refresh
Вскоре после того, как я закончил писать, я обнаружил, что отсутствует способ прыгать страница, то есть заставлять страницу указать в метатете в HTML, чтобы обновить. Например, напишите в B.HTML
Скопируйте код кода следующим образом: <meta http-equiv = "refresh" content = "5; url = a.html">
Затем через 5 секунд браузер автоматически инициирует запрос страницы на сервер.
После тестирования, в IE8, FF3.6-FF4.0, не будет никакой информации об реферике, но Chrome может добавить B.HTML в качестве реферата в заголовке по ошибке.