2012-05-18 53 views
0

我一直在嘗試解決這個問題很長一段時間:我無法訪問窗口的URL,因爲它在另一個域上。有些解決方案?Javascript窗口

function login() { 
     var cb = window.open(_url, "windowname1", 'width=800, height=600'); 

     var pollTimer = window.setInterval(function() { 
      if (cb.document.url.indexOf(REDIRECT) >= 0) { 
       window.clearInterval(pollTimer); 
       var url = cb.document.url; 
       acToken = gup(url, 'access_token'); 
       tokenType = gup(url, 'token_type'); 
       expiresIn = gup(url, 'expires_in'); 
       cb.close(); 

       validateToken(acToken); 
      } 
     }, 100); 
    } 
+0

沒有嘗試,但可以Request.UrlReferrer以某種方式幫助嗎? –

+1

如果不在同一個域中,則忘記它,因爲它屬於SOP。 – yent

+0

但如果窗口的url(域)是一個回我自己的域,我有權訪問? (即時與谷歌客戶端oauth2工作) –

回答

0

不,跨域政策劫持沒有解決方案。來自mozilla developer的Here some quick overview

如果您解釋了您與來自其他域的document.url屬性究竟有什麼關係,可能是某人找到了解決方法。

+0

有可能@ https:// developers.google.com/accounts/docs/OAuth2UserAgent –

+0

可以訪問基於HTTP的Google API,但不能訪問一般的跨域訪問。 – GodLesZ

+0

甚至沒有JSONP? –

2

我有同樣的問題,IE9,我找到了解決辦法:加試{}趕上{}和增加的pollTimer 捐贈時間:

function login() { 
    var cb = window.open(_url, "windowname1", 'width=800, height=600'); 

    var pollTimer = window.setInterval(function() { 
     try { 
      if (cb.document.url.indexOf(REDIRECT) >= 0) { 
       window.clearInterval(pollTimer); 
       var url = cb.document.url; 
       acToken = gup(url, 'access_token'); 
       tokenType = gup(url, 'token_type'); 
       expiresIn = gup(url, 'expires_in'); 
       cb.close(); 

       validateToken(acToken); 
      } 
     } catch (e) { 
     } 
    }, 500); 
} 
0

你有過_url的內容控制?

在這種情況下,你可以讓它迴歸它是通過與document.write JavaScript內容然後經由<script type="text/javascript" src="_url" />

在此之後引用它包括它當前的頁面上,你可以通過DOM,你訪問_url的內容喜歡。