- Document referrer не работает
- Полезная информация
- №1 02-06-2009 12:35:59
- Передача referrer при работе с фреймом
- №2 05-06-2009 10:57:54
- Re: Передача referrer при работе с фреймом
- №3 06-06-2009 09:00:35
- Re: Передача referrer при работе с фреймом
- №4 08-06-2009 16:08:09
- Re: Передача referrer при работе с фреймом
- №5 08-06-2009 16:32:03
- Re: Передача referrer при работе с фреймом
- Как получить предыдущий URL в JavaScript?
- 7 ответов
- Евгений Степанищев
- Как вручную установить заголовок REFERER в Javascript?
- 8 ответов
- Как вручную установить заголовок REFERER в Javascript?
- 8 ответов
Document referrer не работает
Полезная информация
Страницы: 1
№1 02-06-2009 12:35:59
Передача referrer при работе с фреймом
расширение открывает страницу в заданном фрейме, но при этом referrer пустой.
Есть метод loadURI(), в нём можно задавать referrer, но не получается указать фрейм в котором должна открыться страница.
Как сделать так чтобы страница открывалась во фрейме и при этом передавалась страничка с которой она загружена?
Отредактировано Орец (12-08-2009 11:46:32)
№2 05-06-2009 10:57:54
Re: Передача referrer при работе с фреймом
Эта проблема не решаемая?
№3 06-06-2009 09:00:35
Re: Передача referrer при работе с фреймом
В принцие, решаемая: https://developer.mozilla.org/en/Creating_Sandboxed_HTTP_Connections#HTTP_referrer
Но сначала можно попробовать изменить document.referrer у документа фрейма.
Время настанет, время придет.
И лис к О нкурi е нтов на части порвет .
№4 08-06-2009 16:08:09
Re: Передача referrer при работе с фреймом
В принцие, решаемая: https://developer.mozilla.org/en/Creating_Sandboxed_HTTP_Connections#HTTP_referrer
Но сначала можно попробовать изменить document.referrer у документа фрейма.
document.referrer — неизменяемый вроде. У меня при попытке заменить значение стопарился код в этом месте.
А с первым не получается, не понимаю как сработать должно.
№5 08-06-2009 16:32:03
Re: Передача referrer при работе с фреймом
А с первым не получается, не понимаю как сработать должно.
Надо настроить observer на http-on-modify-request. Когда пойдёт запрос от фрейма, subject’у уведомления можно будет установить referrer.
Отдельный вопрос — как узнать, что запрос идёт именно от нужного фрейма. Мне, вроде бы, что-то на эту тему попадалось, но из головы прочно вылетело.
Время настанет, время придет.
И лис к О нкурi е нтов на части порвет .
Источник
Как получить предыдущий URL в JavaScript?
Есть ли способ получить предыдущий URL в JavaScript? Что-то вроде этого:
Есть ли что-то подобное? Или я должен просто сохранить его в печенье? Мне нужно только знать, чтобы я мог выполнять переходы с предыдущего URL на текущий URL без привязок и все такое.
7 ответов
Во многих случаях вы получите URL-адрес последней страницы, которую посетил пользователь, если он попал на текущую страницу, щелкнув ссылку (в отличие от ввода непосредственно в адресную строку, или, я полагаю, в некоторых случаях, отправив форму?). Указано DOM уровня 2. Подробнее здесь.
window.history разрешает навигацию, но не доступ к URL-адресам в сеансе по соображениям безопасности и конфиденциальности. Если бы была доступна более подробная история URL, то каждый посещенный вами сайт мог бы видеть все другие сайты, на которых вы были.
Если вы имеете дело с перемещением состояний по вашему собственному сайту, то, возможно, менее хрупким и, безусловно, более полезным использовать один из обычных методов управления сеансом: данные cookie, параметры URL или информацию о сеансе на стороне сервера.
Это позволит перейти к ранее посещенному URL.
document.referrer соответствует вашим целям, но не работает для версий Internet Explorer более ранних, чем IE9.
Он будет работать для других популярных браузеров, таких как Chrome, Mozilla, Opera, Safari и т. Д.
Те из вас, кто использует Node.js и Express, могут установить cookie-файл сеанса, который запомнит URL текущей страницы, что позволит вам проверить реферер при загрузке следующей страницы. Вот пример, который использует промежуточное ПО express-session :
Затем вы можете проверить наличие cookie-файла referer следующим образом:
Не предполагайте, что cookie-файл реферера всегда существует с этим методом, поскольку он не будет доступен в тех случаях, когда предыдущий URL-адрес был другим веб-сайтом, сеанс был очищен или был только что создан (загрузка веб-сайта впервые).
Если вы пишете веб-приложение или одностраничное приложение (SPA), в котором маршрутизация выполняется в приложении / браузере, а не в обратном направлении на сервер, вы можете сделать следующее:
Затем в вашем новом маршруте вы можете сделать следующее, чтобы получить предыдущий URL:
document.referrer не совпадает с фактическим URL во всех ситуациях.
У меня есть приложение, где мне нужно установить frameset с 2 кадрами. Один кадр известен, другой — это страница, на которую я ссылаюсь. Казалось бы, document.referrer было бы идеально, потому что вам не нужно было бы передавать фактическое имя файла в документ набора фреймов.
Однако, если вы позже измените страницу нижнего фрейма, а затем используете history.back() , она не загружает исходную страницу в нижний фрейм, а перезагружает document.referrer , и в результате набор фреймов исчезает, и вы возвращаетесь в исходное стартовое окно.
Мне понадобилось немного времени, чтобы понять это. Таким образом, в массиве истории document.referrer является не только URL-адресом, но, по-видимому, также спецификацией окна реферера. По крайней мере, это лучший способ понять это сейчас.
Если вы хотите перейти на предыдущую страницу, не зная URL-адреса, вы можете использовать новый API History.
Но вы не можете манипулировать содержимым стека истории в браузере, который не поддерживает HTML5 History API
Для получения дополнительной информации см. документ.
Источник
Евгений Степанищев
Так вот, оба браузера построены на библиотеке Webkit и оба грешат тем, что не передают HTTP_REFERER.
На самом деле передают, но не всегда, что еще больше запутывает ситуацию. Если человек просто нажмет на ссылку, то реферер будет передан серверу, если откроет новое окно или вкладку «альтернативным» нажатием (на Маке это cmd-click или нажатие средней кнопки), то тоже передастся, а вот если нажать правой кнопкой (или ctrl-click), то нет.
Причём, пятый Хром ведёт себя так же. Ненависть. Багу уже несколько лет, разработчикам он известен, но они его не исправляют.
Действительно не передает.
Баг проявляется в большем числе случаев, чем это написано на приведенной странице.
Referrer передается серверу (в http-заголовке), но не записывается в переменную JavaScript’а document.referrer в том случае, если делается http-редирект (например, переходы с поиска Яндекса ;)).
Для development-версии (5.x) ошибка исправлена (а раньше была исправлена и для development-версии 4.x), для релиза — не исправлена (то есть не работало в 3.x, сейчас не работает и в 4.x).
Тестовая страница:
http://support.li.ru/tmp/chrome-ref-fail.html
В нормальных браузерах после перехода по обеим ссылкам будет показан адрес ссылающейся страницы в двух строках. В Chrome 4 строка «JavaScript referrer» будет пустой
В пятой версии при открытии ссылки в новом окне или вкладке (именно вручную через контекстное меню правой кнопкой) во всех случаях referrer не передается. А вот если кликнуть по ссылке с нажатым shift или ctrl, то передается.
Источник
Как вручную установить заголовок REFERER в Javascript?
Я хочу установить заголовок Referer на моей веб-странице. В настоящее время он отображает «xyz», и я хочу установить его в «abc».
Просмотрен реферер с помощью javascript:alert(document.referer)
8 ответов
Вы не можете установить заголовок Referer вручную, но вы можете использовать location.href для установки заголовка referer для ссылки, используемой в href , но это приведет к перезагрузке страницы.
Вышеупомянутое решение не работает для меня, я попытался следовать, и это работает во всех браузерах.
Просто сделал поддельный вызов ajax, он сделает запись в заголовок реферера.
Это работает в Chrome, Firefox, не работает в Safari :(, не проверялось в других браузерах
Тестовый пример: https://jsfiddle.net/bez3w4ko/ (так что вы можете легко протестировать несколько браузеров) и здесь тест с iframes https://jsfiddle.net/2vbfpjp1/1/
Я думаю, что понимание того, почему вы не можете изменить заголовок referer , может помочь людям прочитать этот вопрос.
Имя запрещенного заголовка — это имя любого HTTP-заголовка, который нельзя изменить программным способом .
Изменение таких заголовков запрещено, поскольку пользовательский агент сохраняет полный контроль над ними.
Запрещенные имена заголовков . являются одним из следующих имен:
Если вы хотите изменить заголовок реферера (url), который будет отправляться на сервер, когда пользователь щелкает привязку или открывается iframe, вы можете сделать это без каких-либо взломов. Просто сделайте history.replaceState, вы измените URL, как он будет отображаться на панели браузера, а также реферер, который будет отправлен на сервер.
Вы не можете изменить свойство REFERRER. То, что вы просите, это подделать запрос.
На всякий случай, если вы хотите, чтобы реферер был установлен так, как будто вы открыли URL-адрес напрямую или в первый раз
Вы можете использовать Object.defineProperty для объекта документа для свойства referrer:
К сожалению, это не будет работать ни в одной версии safari 37
Вы можете изменить значение реферера в заголовке HTTP с помощью API веб-запроса.
Для его использования требуется фоновый js-скрипт. Вы можете использовать onBeforeSendHeaders , так как он изменяет заголовок перед отправкой запроса.
Ваш код будет примерно таким:
urls : он действует как фильтр запросов и вызывает слушателя только для определенных запросов.
Источник
Как вручную установить заголовок REFERER в Javascript?
Я хочу установить заголовок Referer моей веб-страницы. В настоящее время он отображает «xyz», и я хочу установить его в «abc».
просмотр реферера с помощью javascript:alert(document.referer)
8 ответов
вы не можете установить вручную, но вы можете использовать location.href установить referer Заголовок ссылки, используемой в href но это вызовет перезагрузку страницы.
вы можете использовать Object.defineProperty на объекте документа для свойства referrer:
к сожалению, это не будет работать ни на одной версии safari
это работает в Chrome, Firefox, не работает в Safari: (, не тестировался в других браузерах
тест: https://jsfiddle.net/bez3w4ko/ (так что вы можете легко протестировать несколько браузеров), а вот тест с iframes https://jsfiddle.net/2vbfpjp1/1/
выше решение не работает для меня, я попытался следовать, и он работает во всех браузерах.
просто сделал поддельный вызов ajax, он сделает запись в заголовке referer.
вы не можете изменить свойство REFERRER. То, что вы просите, — это подделать запрос.
на всякий случай, если вы хотите, чтобы реферер был установлен, как вы открыли url-адрес напрямую или в первый раз
Если вы хотите изменить заголовок referer (url), который будет отправлен на сервер, когда пользователь щелкает якорь или открывается iframe, вы можете сделать это без каких-либо хаков. Просто занимайтесь историей.replaceState, вы измените url, как он будет отображаться в строке браузера, а также референт, который будет отправлен на сервер.
Я думаю, что понимание того, почему вы не можете изменить может помочь людям, читающим этот вопрос.
запрещенное имя заголовка-это имя любого HTTP-заголовка, который нельзя изменить программным способом.
изменение таких заголовков запрещено, так как агент пользователя сохраняет полную контроль над ними.
запрещенные имена заголовков . являются одним из следующих имен:
вы можете изменить значение реферера в заголовке HTTP с помощью API веб-запроса.
для его использования требуется фоновый JS-скрипт. Вы можете использовать onBeforeSendHeaders как изменить заголовок перед отправкой запроса.
ваш код будет примерно таким :
urls: он действует как фильтр запросов и вызывает прослушиватель только для определенных запросов.
Источник