Обходное решение политики того-же-источника с помощью document.domain в JavaScript

Я сталкиваюсь с вопросами политики того-же-источника в JavaScript. Я читал об обходном решении для этого использования document.domain переменная, но я не могу заставить обходное решение работать. Обходное решение состоит в том, что Вы, как предполагается, можете установить document.domain кому: 'example.com' так, чтобы, если Вы выполняете код от foo.example.com это может загрузить данные через XHR от bar.example.com.

Детали об обходном решении здесь:

https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript

Мой пример кода - который не приводит к желаемым результатам - выполняется от URL как http://foo.example.com/:





Result:

Вывод из этого кода:

Result:
Error loading page: 0

Если я изменяюсь url кому: 'http://foo.example.com/', все работает правильно. В моем примере кода существует ли ошибка?

Я не хочу использовать прокси, потому что они медленнее, менее эффективны, и увеличат трафик в нашем веб-сервере. Было бы действительно здорово, если бы это обходное решение на самом деле работало. Является это обходное решение "журавлем в небе"?

21
задан Kara 6 December 2013 в 02:37
поделиться

2 ответа

Поскольку Мик ответил, почему это не работает, я подумал, что поделюсь решением вопроса «как» сделать крест -доменная работа. См. Мое сообщение SO здесь .

4
ответ дан 29 November 2019 в 21:35
поделиться

document.domain обеспечивает связь между кадрами/iframe. Не XHR.

<body>
<iframe src="http://bar.example.com/"></iframe>
<script>
    document.domain = 'example.com';
    var ifr = document.getElementsByTagName('IFRAME')[0];
    ifr.onload = function(e){
        //will log the string "BODY" in the console
        console.log(ifr.contentWindow.document.body.tagName);
    };
</script>
</body>

Если удалить строку с document.domain, чтение содержимого contentWindow вызовет ошибку Same Origin Policy.

23
ответ дан 29 November 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: