Access-Control-Allow-Origin不允许'ip'

时间:2012-01-21 05:25:47

标签: javascript html5

我不知道如何解决这个问题。

XMLHttpRequest无法加载http://gumball.wickedlysmart.com/?lastreporttime=1302212903099。 Access-Control-Allow-Origin不允许原点http://192.168.0.102

我用谷歌搜索,人们说我应该添加“访问控制 - 允许 - 来源:*;'在标题

我该怎么做?我把它放在哪里?在HTML文件?还是js文件?

这是我的JS代码。请帮助。

window.onload = function() {

    var url = "http://gumball.wickedlysmart.com/?lastreporttime=1302212903099&callback=?";
    var request = new XMLHttpRequest();

    request.open("GET", url);
    request.onload = function() {
        if (request.status == 200) {
            updateSales(request.responseText);
        }
    };
    request.send(null);

    function updateSales(responseText) {
        var salesDiv = document.getElementById("sales");
        salesDiv.innerHTML = responseText;
    }

}

1 个答案:

答案 0 :(得分:2)

您不会添加Access-Control-Allow-Origin标题 - 他们

这是"Response Header",因此gumball.wickedlysmart.com的维护者必须将其添加到他们的回复中。

尽管如此,我非常怀疑他们会被说服添加仅限局域网的IP - 192.168.x.x


但是,该服务支持JSONP,因此不应该使用标头。这是因为JSONP不是Ajax,不使用XMLHttpRequest

相反,JSONP请求是通过将新的<script>源附加到文档来实现的:

function requestJSONP(url) {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;

    document.body.appendChild(script);
}

另请注意,?的{​​{1}}只是某些图书馆提供的帮助(例如jQuery)。您必须将实际的全局函数名称指定为实际接收响应的callback=?的值:

callback

示例:http://jsfiddle.net/mnjxB/1/