2014-04-29 8 views
9

Ich versuche, auf einen Iframe innerhalb einer Subdomäne zuzugreifen und einen Cross-Domain-Fehler zu erhalten.

Hier ist der Code von Beispiel .mydomain.com/iframe_test.html:Access-Control-Allow-Origin funktioniert nicht für iframe mit derselben Domäne

<html> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
</head> 
<body> 
    <iframe src="http://example2.mydomain.com/welcome.php" width="1000" height="600"></iframe> 
    <script> 
     $(document).ready(function() 
     { 
      setTimeout(function(){ 
       $('#innerdiv',$('iframe').contents()).hide(); 
      },5000); 
     }); 
    </script> 
</body> 
</html> 



Und hier ist der Code von example2 .mydomain.com/welcome.php:

<?php 
header("Access-Control-Allow-Origin: " . "*"); 
?> 
<html> 
<head> 

</head> 
<body> 
    <div id="innerdiv"> 
     hello 
    </div> 
</body> 
</html> 



. Wenn die Linie $ (. '# Innerdiv', $ ('iframe') Inhalt()) hide() ausgeführt wird, wird der folgende Fehler tritt auf:

Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://example.mydomain.com" from accessing a frame with origin "http://example2.mydomain.com". Protocols, domains, and ports must match. 


ich mit Fiddler vergewissert, dass Der Header Access-Control-Allow-Origin wurde in der Antwort von welcome.php wirklich zurückgegeben. Ist es möglich, auf den Inhalt eines iFrame innerhalb einer Subdomäne zuzugreifen?

Antwort

15

Access-Control-Allow-Origin wird nur für XHR verwendet.

Was Sie brauchen, heißt Same Origin Policy.

Sie müssen Ihren Seiten document.domain = 'example.com' hinzufügen.

+0

Wo sollten wir das document.domain-Zeug hinzufügen? Können Sie ein wenig mehr ausarbeiten? Vielen Dank. –

+0

@SaeedNeamati Sie müssen es den beiden Seiten in das Skript-Tag hinzufügen. Im Grunde müssen die Hauptseite und die Iframe-Seite '' set –

+7

Das funktioniert nicht, bekomme ich: 'Uncaught SecurityError: Fehler beim Festlegen der Eigenschaft 'Domäne' auf 'Dokument ':' example.com 'ist kein Suffix von' '.' –