JavaScript:从弹出窗口获取值(外部网站)
我正在使用此代码从弹出窗口中的字段中获取值。
http://myotherwebsitename.com/parent.html
document.getElementById('show').addEventListener('click', function(){ window['output'] = document.getElementById('output'); window.open('http://mywebsite.com/map.html') });
http://mywebsite.com/map.html
document.getElementById('send').addEventListener('click', function(){ window.opener['output'].value = document.getElementById('user_text').value; })
如果它们都托管在同一个网站上,它可以很好地工作,但是如果我将其中一个放在其他网站上则不起作用。
我怎样才能让它适用于不同的网站?
谢谢!
由于相同的原始政策,您无法从其他网站获取信息。 这里有一个更好的定义为什么……
在计算中,同源策略是许多浏览器端编程语言(如JavaScript)的重要安全概念。 该策略允许在源自同一站点的页面上运行的脚本 – 方案,主机名和端口号[1]的组合 – 在没有特定限制的情况下访问彼此的DOM,但阻止访问不同站点上的DOM。[1] 同源策略也适用于XMLHttpRequest和robots.txt。
http://en.wikipedia.org/wiki/Same-origin_policy 。
希望这可以帮助。 我会看看我是否可以找到解决方法并让你知道。
是的,相同的原产地政策……
如果您有权访问外部站点,则可以通过在请求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域。