2014-09-10 17 views
1

我在本地服务器上运行Google Super Proxy项目并尝试从Google appspot网站中提取托管的JSON查询数据。CORS支持不能与域名一起使用

http://userTest.appspot.com/query?id=ahJzfmNvbm5vcnBoSDfsFEWDSDxsaXBzMjRyFQsSCEFwaVF1ZXJ5GICAgICAgIAKDA 

我一直遇到的问题是,我不允许从我的本地服务器访问此网页,因为我没有CORS支持。我试过JavaScript和JQuery都是为了启用CORS支持,但我仍然在控制台中收到两条错误消息。任何人都知道什么可以帮助

1)

Failed to load resource: the server responded with a status of 405 (Method Not Allowed) http://userTest.appspot.com/query?id=ahJzfmNvbm5vcnBoaWEEWWEWxsaXBzMjRyFQsSCEFwaVF1ZXJ5GICAgICAgIAKDA 

2)

XMLHttpRequest cannot load http://userTest.appspot.com/query?id=ahJzfmNvbm5vcnBoaWxsaXBzMjREWEADSdyFQsSCEFwaVF1ZXJ5GICAgICAgIAKDA. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8888' is therefore not allowed access. 

的index.html:

<!doctype html> 
<html> 

    <head> 
     <title>Google Super Proxy Test</title> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     <script src="chart-options.js"></script> 
     <script src="Chart.min.js"></script> 
    </head> 

<body> 

    <div style="width: 50%"> 
     <canvas id="sessions-graph" height="450" width="600"></canvas> 
    </div> 


</body> 

</html> 

图表-options.js:

$.ajax({ 
    type: 'GET', 
    url: 'http://userTest.appspot.com/query?id=ahJzfmNvbm5vcnBoaWxsaXBzMSDFSDFSjRyFQsSCEFwaVF1ZXJ5GICAgICAgIAKDA', 
    contentType: 'json', 
    crossDomain: true, 
    headers: { 'Access-Control-Allow-Origin': '*'}, 
    success: function(data) { 
     $.each(data, function(index, element) { 
      alert(element.name); 
    }) 
}, 
    xhrFields: { 
     withCredentials: true 
     }, 

    error: function (json) { 
     debugger; 
    } 
}); 



    var barChartdata = { 
     labels: [], 
     datasets: [ 
      { 
       label: "My First dataset", 
       fillColor: "rgba(220,220,220,0.5)", 
       strokeColor: "rgba(220,220,220,0.8)", 
       highlightFill: "rgba(220,220,220,0.75)", 
       highlightStroke: "rgba(220,220,220,1)", 
       data: [] 
      } 
     ] 
    }; 


    var options = { 

     //Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value 
     scaleBeginAtZero : true, 

     //Boolean - Whether grid lines are shown across the chart 
     scaleShowGridLines : true, 

     //String - Colour of the grid lines 
     scaleGridLineColor : "rgba(0,0,0,.05)", 

     //Number - Width of the grid lines 
     scaleGridLineWidth : 1, 

     //Boolean - If there is a stroke on each bar 
     barShowStroke : true, 

     //Number - Pixel width of the bar stroke 
     barStrokeWidth : 2, 

     //Number - Spacing between each of the X value sets 
     barValueSpacing : 5, 

     //Number - Spacing between data sets within X values 
     barDatasetSpacing : 1, 

     //Boolean - Set if responsive or not 
     responsive : true 

    } 

window.onload = function(){ 

    // Get the context of the canvas element 
    var ctx = document.getElementById("sessions-graph").getContext("2d"); 
    var sessionsGraph = new Chart(ctx).Bar(barChartdata, options); //Create a chart with "data" array 

}; 

回答

1

Access-Control-Allow-Origin响应标头。

您要求提供数据的服务器必须在HTTP响应中提供它。编辑负责生成http://userTest.appspot.com/query的代码以包含它。

它不属于请求标头。您的脚本无法授予自己访问任何网站的权限。

通过使其成为请求标题,您正在触发预检选项请求(这可能是因为您的方法不允许错误)的可能原因。

相关问题