请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许Origin'http:// localhost'访问

时间:2014-08-06 18:53:54

标签: javascript cors

大家好我正在尝试通过这个绘制图形的代码,但是我得到No'Access-Control-Allow-Origin'标头出现在请求的资源上。因此不允许原点'XXXX'访问。我知道有像CORS这样的东西,但我不知道如何使用它。

function get_last_oxygen(location, start_time, end_time)
    {
        var xmlHttp = null;
        var oxy_url = 'http://localhost:8888/' + location + '/oxygen/1/1/last';
        xmlHttp = new XMLHttpRequest();
        xmlHttp.open( "GET", oxy_url, true );        
        xmlHttp.send( null );
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                var json = JSON.parse(xmlHttp.responseText);
                var oxy = document.getElementById('oxygen');
                oxy.innerHTML = json.oxygen;
                get_oxygen_range(location, start_time, end_time);
                //alert(xmlHttp.status + ' ' + xmlHttp.responseText);
           }
        }
    }

    function get_oxygen_range(location, start_time, end_time) {
        var req_range = null;
        var range_url = 'http://localhost:8888/' + location + '/oxygen/1/1/' + start_time + ':' + end_time;;
        req_range = new XMLHttpRequest();
        req_range.open( "GET", range_url, true );       
        req_range.send( null );
        req_range.onreadystatechange = function() {
            if (req_range.readyState == 4) {
                var measurements = eval(req_range.responseText);
                draw_oxygen_diagram(measurements);
           }
        }
    }

    /* Draw a diagram */
    function draw_oxygen_diagram(data) {
        var container = document.getElementById('container');
        //var data = [[1,10], [2,8], [3,11], [4,7], [5,9]];
        graph = Flotr.draw(container, [data], {
            //shadowSize: 0,
            timeUnit: 'second', 
            yaxis : { 
                max: 20,
                min: 0
            },
            xaxis : {
                mode: 'time'
            }
        });
    }

    function refresh() {
        var now = Math.round(new Date().getTime() / 1000);
        now = 1406906881;
        get_last_oxygen('rauco', now - 86400, now);
        setTimeout(refresh, 5000);
    }

    refresh();

2 个答案:

答案 0 :(得分:0)

对于PHP服务器,只需启用CORS即可添加此行。

header("Access-Control-Allow-Origin: *");

确保在发送任何其他内容之前设置此项。这意味着在任何echo语句或html之上。把它放在顶端应该有效。

网站http://enable-cors.org/index.html是了解更多有关CORS以及如何在不同服务器设置上使用它的良好资源。

答案 1 :(得分:0)

参考Angular.js No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access

" Access-Control-Allow-Origin设置在来自服务器的响应上,而不是客户端请求上,以允许来自不同来源的客户端访问响应。"