2012-08-09 25 views
8

में ऑटो लॉगिन दूरस्थ साइट आंतरिक मेरे पास एक मौजूदा दूरस्थ साइट है जिसका उपयोग करने के लिए प्रमाणीकरण है, अब मैं इस साइट को आईफ्रेम का उपयोग करके अपनी साइट में जोड़ना चाहता हूं। क्या कोई समाधान है जो आईफ्रेम लोड करते समय दूरस्थ लॉगिन ऑटो साइट में मदद कर सकता है?आईफ़्रेम

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

तो http://remote.com/list का उपयोग करना चाहते हैं, लॉगिन की आवश्यकता होती है और केवल नाम/पासवर्ड काम करता है पोस्ट। Iframe लोड होने पर ऑटो लॉगिन कैसे करें?

यहाँ कुछ प्रतिबंध

  • लॉगिन केवल पोस्ट विधि के साथ काम करता है
  • आइफ्रेम/जावास्क्रिप्ट क्रॉस डोमेन मुद्दा
  • कोई प्रवेश एपीआई प्रदान किया है
  • कोई अन्य संशोधन दूरस्थ साइट में क्या कर सकते हैं

उत्तर

0

नहीं किया जा सकता है। इतना ही आसान। क्रॉस डोमेन प्रतिबंध आपको विशेष रूप से ऐसा करने में सक्षम होने से रोकने के लिए काफी जगह पर हैं।

2

यदि आप दूसरी साइट के स्वामी हैं तो आप कुछ टोकन के माध्यम से प्रमाणीकरण का प्रयास कर सकते हैं।

आईफ्रेम में यूआरएल के लिए एक अधिकृत टोकन पास करें।

+0

दूरस्थ साइट द्वारा प्रदान किए जाने वाले टोकन नहीं। – linbo

14

सबकुछ संभव है। हालांकि दूरस्थ पृष्ठ पर पहुंच विवरण के प्रकटीकरण के कारण नीचे दिया गया समाधान बहुत असुरक्षित है।

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

username और password आदानों के मूल्यों क्लाइंट की तरफ पठनीय हैं।

+0

हम क्रेडेंशियल को छिपाने के लिए इसे सर्वर पक्ष का उपयोग कर सकते हैं। –

+0

समस्या के लिए सबसे अच्छा जवाब की तरह लगता है; मेरा सुझाव है कि आप यह – lwohlhart

2

यह करने के लिए मेरा कार्यान्वयन यहां है। हालांकि यह क्रॉस-डोमेन समस्या को हल नहीं करता है। क्रॉस-डोमेन समस्या के लिए, आप jQuery की JSONP विधि का उपयोग करने का प्रयास कर सकते हैं (मैंने अभी तक इस समाधान के साथ jQuery को संयोजित करने का प्रयास नहीं किया है)।

<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

स्वीकार करें क्या यह वास्तव में सुरक्षित है? उपयोगकर्ता नाम और पासवर्ड को जेएस फ़ाइल में कोडित किया गया है जिसे क्लाइंट द्वारा डाउनलोड किया जा सकता है? – codea

+0

* .hta में प्रमाणीकरण के साथ