2014-01-25 3 views
2

Я работаю над веб-приложением. В этом веб-приложении я должен загрузить веб-страницу с разных серверов (например: www.xyz.com) в iframe. Но иногда, когда я пытаюсь загрузить веб-страницу с другого сервера в iframe, сервер отвечает кодом HTTP-статуса 302 (обозначает перенаправление) с ссылкой перенаправления в поле заголовка «Место». Когда это происходит, главное окно (мое веб-приложение) перенаправляется вместо перенаправления, происходящего только в iframe. Как я могу гарантировать, что перенаправление происходит только в iframe вместо главного окна?HTTP-перенаправление в iframe вместо перенаправления в родительском окне

+0

Это невозможно с переадресацией только на сервер. Бьюсь об заклад, что веб-сайт, который вы включаете в iframe, имеет специальную защиту от этого, и когда он обнаруживает, что он просто использует javascript для изъятия из iframe и перезагрузки родителя. Лучшее, что вы можете сделать, это поговорить с владельцами веб-сайта, который вы пытаетесь отобразить внутри iframe. –

ответ

6

Использование песочница = "..."

  • Allow-формы позволяет не заполнять форму
  • позволяют-всплывающие окна позволяет всплывающие окна
  • позволяют указка замок позволяет Заблокируйте указатель
  • позволяют-кампанией с таким же происхождение позволяет документу сохранить свое происхождение
  • allow-scripts позволяет выполнять JavaScript, а также позволяет автоматически запускать функции
  • позволяет-топ-навигация позволяет документу вырваться из рамы, перемещаясь в окне верхнего уровня

Top навигация, что вы хотите, чтобы предотвратить, поэтому оставьте, что, и это не будет позволено. Все оставленные будут заблокированы

ex.

 <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" src="http://www.example.com"</iframe> 
+0

Это не перемещается в iframe, но вместо этого появляется фактическое всплывающее окно. Не думайте, что это был вопрос. –

0

Речь идет не о вашем перенаправлении, а о том, что происходит раньше: Я полагаю, что пользователь подав форму, через POST и веб-сервер отвечает 302 Перенаправления согласно лучшей практике.

Если <form> имеет action атрибут, указывающий на другую страницу, его ответ будет перенаправлять топ IFRAME. Я не мог найти справочный документ с указанием этого поведения, но так оно работает в текущих браузерах.

Решение установить атрибут target в _self:

<iframe> 
    ... 
    <form action="http..." target="_self" > 
    ... 
</iframe> 

Атрибут sandbox не поможет, вы, вероятно, хотите, чтобы опустить атрибут или установить allow-forms allow-navigation по крайней мере.

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