J'ai un site distant existant qui a une authentification pour accéder, maintenant je veux combiner ce site dans mon propre site en utilisant iframe. Existe-t-il une solution qui peut aider à la connexion automatique au site distant lors du chargement de l'iframe?
<iframe src="http://remote.com/list"></iframe>
Si vous souhaitez accéder à http://remote.com/list , la connexion nécessite et ne publie que le nom d'utilisateur/mot de passe fonctionne. Comment se connecter automatiquement lorsque iframe est chargé?
Voici quelques restrictions
Tout est possible. Cependant, la solution ci-dessous est très peu sûre en raison de la divulgation des détails d'accès à la page distante.
<form id="login" target="frame" method="post" action="http://remote.com/login">
<input type="hidden" name="username" value="login" />
<input type="hidden" name="password" value="pass" />
</form>
<iframe id="frame" name="frame"></iframe>
<script type="text/javascript">
// submit the form into iframe for login into remote site
document.getElementById('login').submit();
// once you're logged in, change the source url (if needed)
var iframe = document.getElementById('frame');
iframe.onload = function() {
if (iframe.src != "http://remote.com/list") {
iframe.src = "http://remote.com/list";
}
}
</script>
Les valeurs des entrées username
et password
sont lisibles côté client.
Impossible. Aussi simple que cela. Les restrictions interdomaines sont en place tout spécialement pour vous empêcher de faire quelque chose comme ça.
Voici mon implémentation pour ce faire. Cela ne résout cependant pas le problème inter-domaines. Pour le problème inter-domaines, vous pouvez essayer d'utiliser la méthode JSONP de jQuery (je n'ai pas encore essayé de combiner jQuery avec cette solution).
<iframe id="MyIFrame" width="400" height="400"></iframe>
<script type="text/javascript">
var iframeURL = 'http://mysite.com/path/applicationPage.aspx';
var iframeID = 'MyIFrame';
function loadIframe(){
//pre-authenticate
var req = new XMLHttpRequest();
req.open("POST",this.iframeURL, false, "username", "password"); //use POST to safely send combination
req.send(null); //here you can pass extra parameters through
//setiFrame's SRC attribute
var iFrameWin = document.getElementById(this.iframeID);
iFrameWin.src = this.iframeURL + "?extraParameters=true";
}
//onload, call loadIframe() function
loadIframe();
</script>
Si vous êtes propriétaire de l'autre site, vous pouvez essayer l'authentification via un jeton.
Passez un jeton autorisé à url dans l'iframe.