2015-02-02 27 views
18

G + takip düğmesinin tıklama olaylarını yakalamaya çalışırken aşağıdaki sorunlara karşı yaşıyorum.Güvenlik Duvarı Güvenlik Hatası: 'contentDocument' özelliğini 'HTMLIFrameElement' öğesinden okuma başarısız oldu: Kökeni "https: // localhost" olan bir kareyi engelledi

yakalanmamış SecurityError: 'HTMLIFrameElement' den 'contentDocument niteliği okunamadı: "https://apis.google.com" kökenli bir çerçeve erişmesini "https://localhost" kökenli bir çerçeve engellendi. Protokoller, alanlar ve bağlantı noktaları eşleşmelidir.

+0

Olası dupe [Yakalanmayan SecurityError: 'HTMLIFrameElement' dan 'contentDocument' özelliği okunamadı] (http://stackoverflow.com/questions/ 26329519) veya [SecurityError: 'contentDocument' özelliğini 'HTMLIFrameElement öğesinden okuyamadı] (http://stackoverflow.com/questions/26657687) – hippietrail

cevap

5

Benzer bir tartışmayı, Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFram buldum. makalesinin itibaren Mozilla's Same Origin article

For fix this, you will need to add this code

document.domain = 'yourdomain.com' 

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

:

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

Çözümünüzü denedim, ancak iletiyi aldım: SecurityError:' 'Belgede' alan adı ':' http://mimouni.info 'i 'localhost' un bir eki değil. – Mimouni

0

Çözümümün IFRA yeniden yapılandırır ben ve açısal olarak kullanılabilir. Bir iframe oluşturduğumuzda iframe içeriğini değiştirmek için orijin güvenlik kontrolü gerekir. Bu çözüm, iframe içeriğini birkaç kez yeniden oluşturmamızı sağlar.

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(); 
ait
İlgili konular