2015-02-02 4 views
18

Ich stehe unten Problem beim Erfassen von Klickereignissen der G + Folgen Schaltfläche.Uncaught SecurityError: Fehler beim Lesen der 'contentDocument' -Eigenschaft von 'HTMLIFrameElement': Blockiert einen Frame mit dem Ursprung "https: // localhost"

Uncaught SecurityError: Fehler beim Lesen der Eigenschaft 'contentDocument' von 'HTMLIFrameElement': Blockierte einen Frame mit dem Ursprung "https://localhost" vom Zugriff auf einen Frame mit dem Ursprung "https://apis.google.com". Protokolle, Domänen und Ports müssen übereinstimmen.

+0

Mögliche Betrogene von [Uncaught Security: Fehler beim 'contentdocument' Eigenschaft von 'HTMLIFrameElement' lesen] (http://stackoverflow.com/questions/ 26329519) oder [SecurityError: Fehler beim Lesen der 'contentDocument' Eigenschaft von 'HTMLIFrameElement] (http://stackoverflow.com/questions/26657687) – hippietrail

Antwort

5

Ich fand eine ähnliche Diskussion, Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFram.

This issue fired when you try to call ajax to another domain, please check this article for more info about Same origin policy

Mozilla's Same Origin article

For fix this, you will need to add this code

document.domain = 'yourdomain.com' 

Aus dem Artikel selbst:

A page may change its own origin with some limitations. A script can set the value of document.domain to a subset of the current domain. If it does so, the shorter domain is used for subsequent origin checks. For example, assume a script in the document at http://store.company.com/dir/other.html executes the following statement:

document.domain = "company.com"; 

After that statement executes, the page would pass the origin check with http://company.com/dir/page.html . However, by the same reasoning, company.com could not set document.domain to othercompany.com.

The port number is kept separately by the browser. Any call to the setter, including document.domain = document.domain causes the port number to be overwritten with null. Therefore one cannot make company.com:8080 talk to company.com by only setting document.domain = "company.com" in the first. It has to be set in both so that port numbers are both null.

+17

Ich habe versucht, Ihre Lösung, aber ich bekomme die Nachricht: SecurityError: Fehler beim Festlegen der' Eigenschaft der Domäne auf "Dokument": "http://mimouni.info" i S ist kein Suffix von 'localhost'. – Mimouni

0

Meine Lösung rekonstruiert die ifra ich und verwendbar in eckigen. Wenn wir einen Iframe konstruieren, benötigt er eine Originalsicherheitsprüfung, um den Iframe-Inhalt zu modifizieren. Diese Lösung ermöglicht es uns, Iframe-Inhalte mehrmals neu zu erstellen.

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(); 
Verwandte Themen