Я использую этот код, чтобы получить значение из поля в всплывающем окне.
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>
Он работает хорошо, если оба размещены на одном сайте, но если я поместил один из них на другой сайт, он не сработает.
Как я могу заставить его работать на разных сайтах?
Благодарю!
Из-за той же политики происхождения вы не можете получать информацию с другого веб-сайта. вот лучшее определение того, почему...
В вычислениях политика одного и того же происхождения является важной концепцией безопасности для ряда языков программирования на стороне браузера, таких как JavaScript. Политикой разрешены сценарии, выполняемые на страницах, происходящих с одного и того же сайта, - комбинация схемы, имени хоста и номера порта [1] - для доступа друг к другу DOM без каких-либо конкретных ограничений, но предотвращает доступ к DOM на разных сайтах. [1] Политика одинакового происхождения также применяется к XMLHttpRequest и к robots.txt.
http://en.wikipedia.org/wiki/Same-origin_policy.
надеюсь это поможет. Я посмотрю, смогу ли я найти обходное решение и дам вам знать.
Да, такая же политика происхождения...
Если у вас есть доступ к внешнему сайту, вы можете предоставить доступ к своему первому домену, установив заголовок Access-Control-Allow-Origin по запросу OPTIONS. Вот пример 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 содержит схему, и вы должны указать как домены http, так и https в $ allowedList.