2014-09-04 2 views
0

У меня есть страница с iframe, которая загружает html-шаблон из amazon aws s3 bucket. В iframe я хочу взять ссылку родительского окна, а затем добавить некоторые параметры.javascript iframe: доступ к http из https

E.g: Мое родительское окно имеет ссылку http://xx.xx.x.xxx:8088. Я хочу взять этот url, apprend «# abc/edf» и перенаправить на эту страницу. Но я не могу, потому что мой плавающий фрейм имеет URL-адрес https://bucketName.s3.amazonaws.com

ошибки я получаю

Uncaught SecurityError: Blocked a frame with origin "https://bucketName.s3.amazonaws.com" from accessing a frame with origin "http://xx.xx.x.xxx:8088". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match. 

Javascript я для перенаправления на другую страницу из в плавающем фрейме

function navigateTo(e){ 
    var destination = e.data.destination; 
    var url = window.parent.location.host; 

    window.parent.location.href = url+destination; 
} 

$("#button").click({destination: "/#abc/edf"}, navigateTo); 

HTML

<div id="button"><a href="#">Redirect to another page</a></div> 

Я не могу использовать абсолютный путь по какой-либо причине. Ссылка на родительское окно каким-то образом изменится. Я считаю, что лучшим решением является получение родительского URL и добавление параметров, которые я хочу. Как я могу сделать это, не получив ошибку безопасности?

ответ

1

Короткий ответ «вы не можете».

Модель безопасности браузера исключает междоменные и межпротокольные скрипты с клиентской стороны. Ваш встроенный iframe в соответствии с протоколом https не имеет права доступа (даже не чтения) его родительского контекста без https.

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

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