2016-01-18 60 views
5

当我尝试加载我的网页时,出现以下错误:请求标头字段Access-Control-Allow在预检应答中,Access-Control-Allow-Headers不允许-Origin。请求标头字段Access-Control-Allow-Header在预检响应中不被允许访问控制 - 允许标题

我看了其他答案,回应这个问题,他们表明缺乏CORS支持。令人困惑的是我有cors支持!至少我认为我是。

我试图Zingchart连接到我的角度JS前端和使用AJAX请求从我的REST API的数据(位于localhost:3000)

这里是我的AJAX调用:

window.feed = function(callback) { 
    $.ajax({ 
     type: "GET", 
     dataType: "json", 
     headers: { 
      Accept: "application/json", 
      "Access-Control-Allow-Origin": "*" 
     }, 
     url: "http://localhost:3000/readings", 
     success: function (data) { 
      var mem = data.mem.size/10000; 
      var tick = { 
       plot0: parseInt(mem) 
      }; 
      callback(JSON.stringify(tick)); 
     } 
    }); 

我的REST API的实现包括以下内容:

// CORS Support 
app.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type'); 
    next(); 
}); 

我的REST API与本教程的帮助下建:https://www.youtube.com/watch?v=OhPFgqHz68o

回答

6

取出"headers""dataType"。您的请求将如下所示:

$.ajax({ 
    type: "GET", 
    url: "http://localhost:3000/readings", 
    success: function (data) { 
     var mem = data.mem.size/10000; 
     var tick = { 
      plot0: parseInt(mem) 
     }; 
     callback(JSON.stringify(tick)); 
    } 
}); 

您的标题触发了预检请求。

如果您使用的是Angular,我会高度建议不要使用jQuery for AJAX,而应使用Angular的built-in $http service

我在ZingChart团队。霍勒,如果我们可以帮助你的图表。

+0

谢谢Patrick!如果内置的$ http服务运行得更好,我会非常乐意使用它。你有什么我可以用的例子吗?我要做的就是使用这个库从后端获取我的数据,然后解析响应,以遵守Zingcharts格式的要求,我是新的,这听起来是对的吗? – Django

+0

首先:如果答案解决了您的问题,请接受它。 |听起来没错。我上面发布的链接有很多关于使用$ http服务的信息。我们还有一个使用AJAX和Angular的演示:http://codepen.io/zingchart/pen/pjerjY –

+0

谢谢我当然会接受你的答案。在开发人员工具中,您的代码给了我以下问题:Uncaught TypeError:无法读取未定义的属性“大小”。你知道这可能是为什么吗? – Django

相关问题