문제

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/:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script>
document.domain = 'example.com';
window.onload = function() {
    var req = new XMLHttpRequest();
    var url = 'http://bar.example.com/';
    req.open('GET', url, true);
    req.onreadystatechange = function (aEvt) {
        if (req.readyState == 4) {
            var elem = document.getElementById('result');
            if (req.status == 200) {
                var data = req.responseText;
            } else {
                var data = "Error loading page: " + req.status;
            }
            elem.innerHTML = data;
        }
    };
    req.send(null);
};
</script>
Result:<hr>
<div id="result"></div>
</body>
</html>

이 코드의 출력 :

Result:
Error loading page: 0

내가 변하면 url 에게 'http://foo.example.com/', 모든 것이 올바르게 작동합니다. 내 예제 코드에 버그가 있습니까?

프록시가 느리고 효율적이지 않으며 웹 서버의 트래픽을 증가시키기 때문에 프록시를 사용하고 싶지 않습니다. 이 해결 방법이 실제로 작동하면 정말 멋질 것입니다. 이 해결 방법은 "하늘에 파이"입니까?

도움이 되었습니까?

해결책

마이크가 왜 작동하지 않는지 대답했기 때문에, 나는 도메인 크로스 온도를 만드는 방법에 대한 해결책을 공유 할 것이라고 생각했습니다. 내 SO 게시물을 참조하십시오 여기.

다른 팁

document.domain 프레임/iframes 간의 통신을 허용합니다. 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의 내용을 읽으면 동일한 원산지 정책 오류가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top