2012-05-31 2 views
0
if (parent.window.location.pathname.indexOf ("login") > 0) 
    var selfUrl = 'http://www.example.com'; 
else 
    var selfUrl = unescape(parent.window.location.pathname); 

Это перенаправление для входа в систему, но parent.window.location.pathname возвращается неопределенным.parent.window.location.pathname возвращает undefined?

Weirder все еще, мы запускаем тот же код на нашем сервере dev, и все это работает как кошерный. Те же браузеры, один и тот же код.

+0

Вы уверены, что документ, который вы называете этой функцией, имеет «родительский»? То есть, вы выполняете этот код из 'iframe' или аналогичного? Попробуйте без «родительских». –

+0

Путь по-прежнему не должен возвращаться не определен - или, по крайней мере, консоль Chrome не работает, когда я вставляю эту строку в нее. В верхнем окне 'window.parent' возвращает себя. – Brilliand

+0

Одна из ситуаций, когда 'location' может быть неопределенным (или это null?), Заключается в том, что ваш скрипт не имеет прав на доступ к родительскому окну, то есть если он работает в iframe в другом домене. – Brilliand

ответ

0

Является ли родительское окно в том же домене? Если нет, то у вас нет прав на доступ parent.location. Я забыл, сколько из location недоступно в этом случае (я думаю, что у вас нет прав на чтение, но у вас могут быть некоторые права на запись), но вы, конечно же, не сможете получить доступ к этому пути.

+0

Я думаю, что это может быть так: форма входа в систему безопасна, т. Е. Https, а страница, вызывающая ее, - нет. Любая идея для работы? Мы не можем защитить весь сайт, потому что мы разрешаем горячие связанные изображения (люди могут настраивать страницу на нашем сайте, и мы разрешаем им использовать образы, размещенные за пределами, как правило, со своего собственного сайта). – fredphp

+0

Да; вы можете поместить что-то в URL-адрес iframe, указав, что он был вызван на странице входа. Это может быть не больше, чем хеш ('# fromLogin'), добавленный к URL-адресу, а затем проверяется на JavaScript на странице. – Brilliand

Смежные вопросы