Javascript 角度$http.post和否';访问控制允许原点';标题

Javascript 角度$http.post和否';访问控制允许原点';标题,javascript,node.js,angularjs,angularjs-service,Javascript,Node.js,Angularjs,Angularjs Service,我有两个带有nodejs的应用程序,angularjs.nodejs应用程序的代码如下: require('http').createServer(function(req, res) { req.setEncoding('utf8'); var body = ''; var result = ''; req.on('data', function(data) { // console.log("ONDATA"); //var _data = par

我有两个带有nodejs的应用程序,angularjs.nodejs应用程序的代码如下:

require('http').createServer(function(req, res) {


  req.setEncoding('utf8');
  var body = '';
  var result = '';
  req.on('data', function(data) {
      // console.log("ONDATA");

      //var _data = parseInput( data,req.url.toString());
      var _data = parseInputForClient(data, req.url.toString());



      switch (req.url.toString()) {
          case "/cubes":
              {
res.writeHead(200, {
                          'Content-Type': 'application/json',
                          "Access-Control-Allow-Origin": "*"
                      });
                      res.end(JSON.stringify(result));
而此应用程序主机位于
http://localhost:4000
.angularjs应用程序主机,节点
http服务器
模块打开
localhost://www.localhost:3030
。在我的angularjs服务中,我有一些类似的东西:

fetch:function(){
         var data = '{somedata:"somedata"}';
        return $http.post('http://localhost:4000/cubes',data).success(function(cubes){
            console.log(cubes);
        });
    }
但当此服务向服务器发送请求时,会出现以下错误:

XMLHttpRequest cannot load http://localhost:4000/cubes. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3030' is therefore not allowed access. 
所以我搜索网页和stackoverflow来找到一些主题,然后我找到和。根据这些主题,我将服务器中的响应头更改为如下内容:

require('http').createServer(function(req, res) {


  req.setEncoding('utf8');
  var body = '';
  var result = '';
  req.on('data', function(data) {
      // console.log("ONDATA");

      //var _data = parseInput( data,req.url.toString());
      var _data = parseInputForClient(data, req.url.toString());



      switch (req.url.toString()) {
          case "/cubes":
              {
res.writeHead(200, {
                          'Content-Type': 'application/json',
                          "Access-Control-Allow-Origin": "*"
                      });
                      res.end(JSON.stringify(result));

但这不起作用。我尝试使用firefox、chrome,并使用Telerik Fiddler Web Debugger检查请求,但服务器仍然挂起,我得到了访问控制允许源错误。

您执行POST请求,它根据CORS规范生成飞行前请求:和

您的服务器还应该响应OPTIONS方法(除了POST),并在那里返回
accesscontrolalloworigin


你可以看到它的原因,因为当你的代码在网络选项卡(或Fiddler代理调试器)中创建请求时,你应该看到带有
ORIGIN
header的选项request

你可能需要一些额外的头,请看这篇文章:IIRC你至少需要一个允许的方法。另外,我用答案解决了我的问题。问题来自邮政。