Задать вопрос
bob_smith
@bob_smith

Как работать с window.open в firefox (не даёт доступа к родительскому окну)?

Делаю OAuth-авторизацию из социальных сетей, через popup-окошко, в котором открывается страница https://sitename.ru/Account/RegisterVk, запрашивающая информацию из соцсети посредством библиотечки AOAuthNET. Попап открывается следующим образом:
var params = 'menubar=no,location=yes,resizable=no,scrollbars=no,status=no,width=900,height=500',
win = window.open(url, name, params);


В соцетях адрес для результата указан https://sitename.ru/Account/RegisterVkResult, который получает code для доступа к данным пользователя, авторизует его и прописывает куку, а затем возвращает страницу со скриптом следующего содержания:
window.opener.LogOnSuccess('OK');
window.close();


Все URL'ы во всех скриптах прописаны полностью, начинаются с https://sitename.ru (без www).

Сайт работает на IIS 7.5 с установленным Module Rewrite, который редиректит с http на https и с www.sitename.ru на sitename.ru


Собственно проблема: во всех браузерах, за исключением firefox'a данный код отрабатывает отлично, вызывает метод родительского окна LogOnSuccess (который обновляет родительскую страницу) и закрывает попап. А вот Firefox не даёт доступа, считая, что обращение идёт с другого домена. Перерыл кучу вариантов — всё бестолку. Подскажите, в чём косяк и куда копать?
  • Вопрос задан
  • 4354 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
bob_smith
@bob_smith Автор вопроса
Проблема решилась непонятным мне костылём:
Если на странице в попапе перед обращением к window.opener вызвать редирект на саму же себя (то есть просто document.location = 'https://sitename.ru/Account/RegisterVkResult'), то доступ появляется.

Ежели кто-нибудь объяснит причины сего явления, буду крайне признателен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@lubezniy
По идее, в сторону файлов crossdomain.xml и свойства document.domain.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы