即使在node.js中为Angular js添加头文件后,也会出现CROS错误

时间:2015-06-22 10:45:08

标签: javascript angularjs node.js

我正在尝试从NODE JS中为Angular js使用REST API,即使在我的服务器代码中添加cors头后我收到错误XMLHttpRequest也无法加载http://127.0.0.1:8085/issues。请求标头字段Access-Control-Allow-Origin不允许使用Access-Control-Allow-Origin。

我是Angular JS和Node JS的新手。

节点JS代码:

 var fs = require('fs'),
http = require('http');
http.createServer(function (req, res) {
 res.writeHead(200, {
     'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type,    Accept"',
     'Access-Control-Allow-Origin' : 'http://127.0.0.1:8085',
     'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE'
    });

fs.readFile('C:\glossary.json', function (err,data) {
  if (err) {
  res.writeHead(404);
  res.end(JSON.stringify(err));
  return;
}

 res.writeHead(200);
 res.end(data);
    });
          }).listen(8080); 

应用代码:

    var app = angular.module('app', ['restangular'])
          .config(function(RestangularProvider) {
            RestangularProvider.setBaseUrl('http://127.0.0.1:8085/');
            RestangularProvider.setDefaultHeaders({"Access-Control-Allow-  Origin":"*"});
              });

      app.controller('IndexCtrl', function($scope, Restangular) {
        $scope.issue_id = Restangular.all('issues').getList();
    });

尝试使用Restangular进行Rest API消耗。 请帮助

1 个答案:

答案 0 :(得分:1)

错误消息为您解释。

您的客户端代码正在尝试设置Access-Control-Allow-Origin标头:

RestangularProvider.setDefaultHeaders({"Access-Control-Allow-  Origin":"*"});

您的服务器端代码允许使用多个标头,但这不是其中之一:

'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type,    Accept"',

删除该行:

RestangularProvider.setDefaultHeaders({"Access-Control-Allow-  Origin":"*"});

Access-Control-Allow-Origin是一个响应标头,而不是请求标头。