我正在使用此代码从弹出窗口中的字段中获取值。
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>
<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>
如果它们都托管在同一个网站上,那么效果很好,但是如果我将其中一个放在其他网站上则不起作用。
如何让它适用于不同的网站?
谢谢!
答案 0 :(得分:2)
由于原始政策相同,您无法从其他网站获取信息。这里有一个更好的定义为什么......
在计算中,同源策略是许多浏览器端编程语言(如JavaScript)的重要安全概念。该策略允许在源自同一站点的页面上运行的脚本 - 方案,主机名和端口号[1]的组合 - 在没有特定限制的情况下访问彼此的DOM,但阻止访问不同站点上的DOM。[1]同源策略也适用于XMLHttpRequest和robots.txt。
希望这会有所帮助。我会看看我是否可以找到解决方法并让你知道。答案 1 :(得分:1)
如果您有权访问外部网站,则可以通过在请求OPTIONS上设置 Access-Control-Allow-Origin 标头来授予对您的第一个域的访问权限。在这里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域。