Я знаю, что тег iframe может иметь доступ к родительскому элементу с тем же доменом + порты. Однако, если родительский и iframe имеет другой домен + порт?iframe может получить доступ к элементу родителей с разным происхождением (домен + порт)
т.е.
домен родителя является http://aaa.com:63342
, и домен IFrame является http://aaa.com:9080
. (Пожалуйста, обратите внимание, что они имеют разные порты)
Обе страницы имеют <meta http-equiv='X-Frame-Options' content='ALLOWAll'>
в их заголовках.
- first, parent frame call iframe with form submit. как ...
<!DOCTYPE html> <html> <head> <meta http-equiv='X-Frame-Options' content='ALLOWAll'> <title>ParentWindows with aaa.com:63342</title> </head> <body> <form name='form' method='post' id='form' action=''> <input type='text' name='greetings' value='Hello from the otherside'> </form> <script> document.form.target = 'iframe'; document.form.action = 'http://aaa.com:9080//inFrame.jsp'; document.form.submit(); </script> </body> <iframe src="" name='iframe'></iframe> </html>
- Затем сервер возвращает, как показано ниже в JSP
<% response.setHeader("X-Frame-Options", "ALLOWAll"); String greetings = request.getParameter("greetings"); %> <!DOCTYPE html> <html> <head> <meta http-equiv='X-Frame-Options' content='ALLOWAll'> <title>iframe with aaa.com:9080</title> </head> <body> <div> greetings message : <%= greetings %> </div> </body> <script> var div = document.createElement('div'); div.textContent = 'Echo Hello'; parent.document.body.appendChild(div); </script> </html>
Это простой вариант ситуации, что я in. Однако, когда мне это нравится, в консоли браузера отображается ошибка. .
Uncaught SecurityError: Blocked a frame with origin "http://localhost:9080" from accessing a frame with origin "http://localhost:63342". Protocols, domains, and ports must match.
Теперь я сомневаясь с этим методом (вызывающим различные хосты между IFRAME и родителем) возможно в первую очередь ... Возможно ли это?
Как это сделать?
Большое спасибо