2013-11-28 50 views
0

我使用此代碼從彈出窗口中的字段獲取值。JavaScript:從彈出窗口獲取值(外部網站)

http://myotherwebsitename.com/parent.html

<input type="text" id="output"/> 
<button id="show">Open</button> 

<script> 
    document.getElementById('show').addEventListener('click', function(){ 
     window['output'] = document.getElementById('output'); 
     window.open('http://mywebsite.com/map.html') 
    }); 
</script> 

http://mywebsite.com/map.html

<input type="text" id="user_text"/> 
<input id="send" type='button' value'send'/> 

<script> 
    document.getElementById('send').addEventListener('click', function(){ 
    window.opener['output'].value = document.getElementById('user_text').value; 
}) 
</script> 

它工作得很好,如果兩者都在同一網站上託管,但如果我把其中的一個在其他網站也無法正常工作。

我如何使它適用於不同的網站?

謝謝!

+2

你不能。同源政策禁止您訪問其他網站的內容。 – Barmar

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript – Abhitalks

回答

2

由於相同的原產地政策,您無法從其他網站獲取信息。這裏有一個更好的定義,爲什麼...

在計算中,同源策略是許多瀏覽器端編程語言(如JavaScript)的重要安全概念。該策略允許腳本在源自同一站點的頁面上運行 - 方案,主機名和端口號[1]的組合 - 訪問彼此的DOM沒有特定的限制,但是阻止訪問不同站點上的DOM [1]。同源策略也適用於XMLHttpRequest和robots.txt。

http://en.wikipedia.org/wiki/Same-origin_policy

希望這有助於。我會看看我是否可以找到解決方法,然後讓你知道。

1

是的,同根同源的政策...

如果你有機會到外部網站,您可以通過請求選項設置訪問控制允許來源頭授權訪問您的第一個域。這裏的PHP示例:

if (isset($_SERVER['HTTP_ORIGIN']) && in_array($_SERVER['HTTP_ORIGIN'], $allowedList)) 
    { 
     header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']); 
     header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
     header('Access-Control-Allow-Credentials: true'); 
     header('Access-Control-Max-Age: 1000'); 
     header('Access-Control-Allow-Headers: X-Requested-With, Content-Type'); 
     exit; 
    } 

但是您應該知道,HTTP_ORIGIN包含架構,並且您應該在$ allowedList中同時指定http和https域。

+0

是的,我有權訪問外部網站,它是我的。 –

+0

對不起,它不起作用... –

+0

比你應該檢查服務器訪問日誌,也許OPTIONS被服務器配置拒絕等等 –