J'essaie d'accéder à un iframe dans un sous-domaine et d'obtenir une erreur interdomaine.
Voici le code de exemple. Mydomain.com/iframe_test.html:
<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>
Et voici le code de example2. Mydomain.com/welcome.php:
<?php
header("Access-Control-Allow-Origin: " . "*");
?>
<html>
<head>
</head>
<body>
<div id="innerdiv">
hello
</div>
</body>
</html>
Lorsque la ligne $ ('# innerdiv', $ ('iframe'). Contents ()). Hide () est exécutée, l'erreur suivante se produit:
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.
J'ai vérifié avec Fiddler que l'en-tête Access-Control-Allow-Origin était vraiment retourné dans la réponse de welcome.php
Est-il possible d'accéder au contenu d'une iframe dans un sous-domaine?
Access-Control-Allow-Origin
est utilisé uniquement pour XHR.
Ce dont vous avez besoin s'appelle même politique d'origine .
Vous devez ajouter document.domain = 'example.com'
à vos pages.