JavaScript: получить значение из всплывающего окна (внешний сайт)

0

Я использую этот код, чтобы получить значение из поля в всплывающем окне.

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
    Ты не можешь Политика того же происхождения запрещает вам доступ к содержимому других веб-сайтов.
  • 0
    developer.mozilla.org/en-US/docs/Web/JavaScript/...

2 ответа

2

Из-за той же политики происхождения вы не можете получать информацию с другого веб-сайта. вот лучшее определение того, почему...

В вычислениях политика одного и того же происхождения является важной концепцией безопасности для ряда языков программирования на стороне браузера, таких как JavaScript. Политикой разрешены сценарии, выполняемые на страницах, происходящих с одного и того же сайта, - комбинация схемы, имени хоста и номера порта [1] - для доступа друг к другу DOM без каких-либо конкретных ограничений, но предотвращает доступ к DOM на разных сайтах. [1] Политика одинакового происхождения также применяется к XMLHttpRequest и к robots.txt.

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

надеюсь это поможет. Я посмотрю, смогу ли я найти обходное решение и дам вам знать.

1

Да, такая же политика происхождения...

Если у вас есть доступ к внешнему сайту, вы можете предоставить доступ к своему первому домену, установив заголовок 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.

  • 0
    Да, у меня есть доступ к внешнему сайту, он мой.
  • 0
    Мне жаль, что это не работает ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню