Кроссбраузерность и iframe fancybox

darkgod

Создатель
Регистрация
13 Апр 2006
Сообщения
38
Реакции
5
Здравствуйте, возникла следующая проблема.

Написал php-скрипт, к нему get-запросом передаются различные параметры, обработав которые, скрипт делает редирект:
PHP:
echo('<script>window.location="'.$url.'"</script>');
Если вызывать скрипт с сайта таким образом:
HTML:
<a href="script.php?id=123&btype=type1&title=hello&url=ya.ru" target="_blank" onclick="javascript:window.open(this.href,
  '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;"></a>
То все замечательно, в окне отображается содержимое после обработки и редиректа скрипта, если же открыть с помощью fancybox, то возникает ошибка безопасности (кроссбраузерный запрос) :
HTML:
    $(".openframe").fancybox({
        type:'iframe',
        maxWidth    : 600,
        maxHeight    : 600,
                .....
    });

Хотелось бы организовать всплывающее окно с помощью FancyBox без ошибки безопасности, может кто-то подскажет как инициализировать этот запрос, ведь без проблем можно открыть в fancybox google maps. Но там обращение на прямую, а не к php-скрипты, а потом уже редирект.
Была идея просто выводит ссылку php-скриптом, которую бы открывал FancyBox, но попробовав, также ошибка безопасности.

Спасибо.
 
Главная страница:
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Main page</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
        <h1>Главная</h1>
        <div><iframe src="frame.html" style="width: 400px;height: 500px;"></div>
    </body>
</html>

Фрейм:
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Frame</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
        <h1>Frame</h1>
        <script>
            window.location = "http://e1.ru";
        </script>
    </body>
</html>

Все работает, во фрейме отображается нужный url, не важно, fancybox используется или что-то другое


Если в заголовках ответа страницы, на который осуществляется редирект, установлено
что-то вроде
Код:
X-Frame-Options:DENY
, то браузер никак не отобразит её в iframe.
Если нужно из iframe поменять адрес в родительской, главной страницы, нужно использовать конструкцию: top.location вместо window.location
 
Последнее редактирование:
Спасибо за ответ, создал для теста html-ку с фреймом, как у вас в примере, в обоих случаях window/top - Нарушение безопасности, посмотрел сниффером заголовки, заголовка X-Frame-Options : DENY - нет.

Скорей всего придется создавать popup window.open :(
 
Конечный урл находится на том же домене? Нет перехода с https na http?
 
Конечный урл находится на том же домене? Нет перехода с https na http?
нет, не на том же, только я чего-то глюкнул, создал тему не кроссдоменность, а кробраузерность, а поправить уже нельзя (если есть возможность, поправьте, пожалуйста, модератор).

в некоторых случаях есть переход, в некоторых нет.

расскажу подробнее о скрипте, который делает редирект:
отправляется get-запрос:
id - id поста;
url - ссылка на пост;
type - в какой соц. сети происходит "расшаривание".

В зависимости от type происходит редирект по ссылкам:
Скрытое содержимое доступно для зарегистрированных пользователей!

Без скрипта нельзя, перед редиректом скрипт делает запрос в соц.сеть, получает количество "расшариваний" и заносит их в БД.
 
В зависимости от type происходит редирект по ссылкам:

Проверил, как минимум у фейсбука
Код:
Refused to display 'https://www.facebook.com/sharer/sharer.php?u=' in a frame because it set 'X-Frame-Options' to 'DENY'.
Так что в решении с iframe нет смысла продолжать искать ошибку, нужно использовать полноценное отдельное окно.
 
Назад
Сверху