2012-08-09 12 views
8

Ho un sito remoto esistente a cui è possibile accedere tramite l'autenticazione, ora desidero combinare questo sito nel mio sito utilizzando iframe. C'è qualche soluzione che può aiutare ad accedere automaticamente al sito remoto quando si carica l'iframe?auto login sito remoto interno in iframe

<iframe src="http://remote.com/list"></iframe> 

Se desidera accedere http://remote.com/list, login richiedono e solo inviare lavori nome utente/password. Come accedere automaticamente quando è caricato iframe?

Ecco alcune restrizione

  • login funziona solo con metodo post
  • iframe/JavaScript è dominio croce problema
  • alcuna API login fornire
  • nessun altra modifica può fare in sito remoto

risposta

0

Non può essere eseguito. Semplice come quella. Le restrizioni interdominio sono in atto abbastanza specificamente per impedirti di fare qualcosa del genere.

2

Se si possiede l'altro sito, è possibile provare l'autenticazione tramite un token.

Passa un token autorizzato all'URL nell'iframe.

+0

nessun token fornito dal sito remoto. – linbo

14

Tutto è possibile. Tuttavia la soluzione sottostante è molto insicura a causa della divulgazione dei dettagli di accesso alla pagina remota.

<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> 

I valori di username e password ingressi sono leggibili sul lato client.

+0

possiamo usarlo lato server per nascondere le credenziali. –

+0

sembra la migliore risposta per il problema; ti suggerisco di accettare questo – lwohlhart

2

Ecco la mia implementazione per fare questo. Questo però non risolve il problema dei domini. Per il problema interdominio, puoi provare a utilizzare il metodo di jQuery (non ho ancora provato a combinare jQuery con questa soluzione).

<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> 
+0

È davvero sicuro? Avere il nome utente e la password codificati nel file js che possono essere scaricati dal client? – codea

+0

Questo è stato il modo più semplice e veloce per caricare un