Проблемы с разрешением, проверяющие, является ли родительский сайт моим родительским доменом в iframe - PullRequest
0 голосов
/ 22 октября 2010

Я прочитал несколько вопросов по этому вопросу, но все еще немного сбит с толку.Например: ОК, я не могу публиковать примеры из-за ограничений гиперссылок

Вот моя точная ситуация.

У меня есть сайт на mydomain.com На одной из страниц есть iframe для другойстраница на sub.mydomain.com

Я пытаюсь подготовить сценарий загрузки, который, если страница не находится в iframe или родительском домене страницы, содержащей iframe, не является mydomain.com, а затем перенаправить на mydomain.com.

После первоначальных проблем с разрешением я обнаружил проблему с подсчетами поддоменов как отдельных доменов.

В одном из постов выше сказано, что "каждый может использовать либо foo.mydomain.com, либо простоmydomain.com "

Итак, я попробовал (для тестирования): onload =" document.domain = 'mydomain.com'; alert (parent.location.href); "

Это произвелоошибка (http заменен на lar

Error: Permission denied for <http://sub.mydomain.net> (document.domain=<http://mydomain.net>) to get property Location.href from <http://mydomain.net> (document.domain has not been set).
Source File: http://sub.mydomain.net/?pageID=1&framed=1
Line: 1

Удаление оповещения не приводит к ошибкам.

Возможно, я поступаю неправильно, поскольку мне не нужно взаимодействовать с родителем, просто прочитайте егодомен, если естьone.

Хороший простой top.domain.Только для чтения должен быть способ, чтобы люди могли запретить использование своих собственных страниц на сайтах других людей.

Ответы [ 3 ]

0 голосов
/ 22 октября 2010

ОК, глядя на консоль ошибок, я все еще был открыт, когда вернулся домой, крошечная лампочка загорелась.Я довольно новичок в javascript (можете ли вы сказать;), но я подумал: «Если у него есть попытка / поймать» ...

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

Во-первых, заголовок будет иметь следующую частично сгенерированную PHP-функцию:

function getParentDomain()
{
  try
  {
    var wibble=top.location.href;
  }
  catch(err)
  {
    if (err.message.indexOf('http://mydomain.com')!=-1)
    {
      createCookie('IAmAWomble','value')
    }
  }
}

В принципе, значение будет основано на PHP-сессии, я думаю.Это будет выполнено при загрузке страницы.

Если страница не находится на соответствующем сайте или если javascript не включен, то cookie не будет создан.Затем PHP попытается прочитать правильное значение из файла cookie и отобразить содержимое или сообщение об ошибке в зависимости от ситуации.

Я вижу небольшой недостаток в этом при первом посещении, поскольку загрузка страницы будет выполняться после того, как PHP сгенерировалсодержание, но я уверен, что могу обойти это как-то.Я решил опубликовать, потому что это по крайней мере то, о чем я изначально просил, и это способ прочитать URL родительского сайта, если он находится в другом домене, чем сайт во фрейме.

0 голосов
/ 22 декабря 2013

IIUC, вы хотите использовать атрибут window.parent: «Ссылка на родительский элемент текущего окна или подкадра».
Предположительно, window.parent.document.location.host содержит имя домена страницы контейнера.

0 голосов
/ 22 октября 2010

Вы не можете (легко) сделать это из-за ограничений безопасности.

Этот ответ от # 2771397 может указать вам правильное направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...