Подтвердить что ты не робот

Uncaught SecurityError: Не удалось прочитать свойство contentDocument из "HTMLIFrameElement": заблокирован кадр с источником "https://localhost"

Я столкнулся с проблемой ниже, пытаясь зафиксировать события щелчка кнопки G + follow.

Uncaught SecurityError: Не удалось прочитать свойство contentDocument из "HTMLIFrameElement": заблокирован кадр с источником "https://localhost" от доступа к кадру с исходным кодом "https://apis.google.com". Протоколы, домены и порты должны соответствовать.

4b9b3361

Ответ 1

Я нашел подобное обсуждение, Uncaught SecurityError: Не удалось прочитать свойство contentDocument из HTMLIFram.

Эта проблема была запущена при попытке вызвать ajax в другой домен, пожалуйста, просмотрите эту статью для получения дополнительной информации о той же политике происхождения

Статья о том же оригинале Mozilla

Чтобы исправить это, вам нужно будет добавить этот код

document.domain = 'yourdomain.com'

Из самой статьи:

Страница может изменить свое происхождение с некоторыми ограничениями. A script может установить значение document.domain в подмножество текущего домена. Если это так, более короткий домен используется для последующих проверок происхождения. Например, предположим, что script в документе http://store.company.com/dir/other.html выполняет следующее утверждение:

document.domain = "company.com";

После выполнения этой инструкции страница проведет проверку происхождения с помощью http://company.com/dir/page.html. Однако, по тем же соображениям, компания .com не смогла установить document.domain на othercompany.com.

Номер порта хранится отдельно браузером. Любой вызов сеттера, включая document.domain = document.domain, заставляет номер порта перезаписываться нулевым. Поэтому нельзя разговаривать company.com:8080 с company.com, только установив document.domain = "company.com" в первую очередь. Он должен быть установлен так, чтобы номера портов были пустыми.

Ответ 2

Мое решение восстанавливает iframe и может использоваться в angular. Когда мы строим iframe, для проверки содержимого iframe требуется проверка безопасности на начало. Это решение позволяет нам повторно создавать содержимое iframe несколько раз.

HTML

<div id="iframecontainer"></div>

JS

var content = "<h1>Content inside Iframe</h1>"; //desired content of iframe
var iframecontainer = document.getElementById("iframecontainer");
iframecontainer.innerHTML ='<iframe id="threedsframe" width="%90" height="400px"></iframe>';
var iframe = iframecontainer.childNodes[0];
let doc =  iframe.contentDocument || iframe.contentWindow;
doc.open();
doc.write(content);
doc.close();