Подтвердить что ты не робот

Разница между document.referrer и window.parent.location.href

Здесь ситуация: есть сайт, и он принадлежит клиенту, поэтому он не в моем домене, скажем client.com.

На этом сайте есть iframe, источником этого iframe является простой js-код, который загружает другой js (client.js) - этот код находится в моем домене.

Мне нужно сделать, чтобы получить точный URL-адрес страницы, где находится iframe. Так что теперь я пытаюсь разгадать разницу между document.referrer и window.parent.location.href без везения.

Оба дают мне именно то, что мне нужно, но я не могу понять, что более надежно? Есть ли ситуация, когда кто-то будет работать, а другой - нет?

4b9b3361

Ответ 1

document.referrer дает URI страницы, связанной с текущей страницей. Это значение, доступное для всех страниц, а не только для фреймов.

window.parent предоставляет родительский фрейм, а его location - его URI.

Если вы хотите найти URI родительского фрейма, используйте window.parent.location.

Ответ 2

Основное отличие состоит в том, что document.referrer будет указывать на страницу, связанную с текущей страницей внутри iframe. Если ваше содержимое iframe содержит ссылки, которые позволяют перемещаться по нескольким страницам, то только первая страница, загруженная внутри iframe, будет иметь исходный URI родительского кадра как document.referrer. Каждая страница, загруженная щелчком ссылки внутри iframe, будет иметь uri страницы, содержащей ссылку в document.referrer.

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

Как бы то ни было, я предпочел бы дать вашему клиенту что-то вроде служебного ключа или токена, который разрешит его сайту использовать ваше приложение iframed и которое будет аутентифицировать вызывающего в качестве вашего клиента, чтобы вы знали, что вызов с его сайта.