Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 跨域ajax调用失败-Angular.js节点js+;表达_Angularjs_Http Headers_Cors - Fatal编程技术网

Angularjs 跨域ajax调用失败-Angular.js节点js+;表达

Angularjs 跨域ajax调用失败-Angular.js节点js+;表达,angularjs,http-headers,cors,Angularjs,Http Headers,Cors,我正在尝试从angular.js模块跨域调用nodejs+express服务器,但我遇到未经授权的错误,或标题错误: 我遵循了Cors配置,但仍然存在问题 Angular.js代码: methods.getWelcomeApps = function (onSuccess, onError) { function makeBasicAuth(user, password) { var tok = user + ':' + password;

我正在尝试从angular.js模块跨域调用nodejs+express服务器,但我遇到未经授权的错误,或标题错误: 我遵循了Cors配置,但仍然存在问题

Angular.js代码:

methods.getWelcomeApps = function (onSuccess, onError) {
        function makeBasicAuth(user, password) {
            var tok = user + ':' + password;
            var hash = btoa(tok);  // Base64 encoding
            return "Basic " + hash;
        }

        var auth = makeBasicAuth(config.API.AppsList.username, config.API.AppsList.password);
        $http.defaults.useXDomain = true;
        $http({method: 'GET', url: config.API.AppsList.url,  headers: {'Authorization': auth}})
            .success(onSuccess)
            .error(onError);
        };

    return methods;
});

And the node.js code:

allowCrossDomain = 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', 'X-Requested-With');
res.header('Access-Control-Allow-Headers', 'Content-Type');
if (req.method === 'OPTIONS') {
  return res.send(200);
}
return next();
};
我错过什么了吗


thx.

我认为这是不必要的:

res.header('Access-Control-Allow-Headers', 'Content-Type');
var allowCrossDomain = function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
};
这已经足够了:

res.header('Access-Control-Allow-Headers', 'Content-Type');
var allowCrossDomain = function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
};
也许你感兴趣:

我的完整工作代码-angularjs客户端服务和nodejs服务器服务:

客户端(angularjs v1.0.8)

motoads/app/js/services.js

var motoAdsServices = angular.module('motoAdsServices', ['ngResource']);

motoAdsServices.factory('Brand', ['$resource', function($resource) {
    return $resource('http://localhost\\:3000/api/:id', {}, {
      query: {
        method: 'GET',
        params: {
          id: 'brands'
        },
        isArray: true
      }
    });
  }]);
服务器(nodejs+express)

motoads/server/server.js

var express = require('express');
var path = require('path');
var http = require('http');
var brands = require('./routes/brands');

var app = express();

var allowCrossDomain = function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
};

app.configure(function() {
  app.set('port', process.env.PORT || 3000);
  app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
  app.use(express.bodyParser()),
          app.use(allowCrossDomain);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.get('/api/brands', brands.findAll);

http.createServer(app).listen(app.get('port'), function() {
  console.log("Express server listening on port " + app.get('port'));
});
motoads/server/routes/brands.js

exports.findAll = function(req, res) {
  var fs = require('fs');
  var file = './server/data/brands.json';

  fs.readFile(file, 'utf8', function(err, data) {
    if (err) {
      throw err;
    }
    res.send(JSON.parse(data));
  });
};
motoads/server/data/brands.json

[
  {"name": "Audi", "models": [{"name": "A1"}, {"name": "A3"}, {"name": "A4"}]},
  {"name": "BMW", "models": [{"name": "Series 3"}, {"name": "Series 5"}, {"name": "Series 7"}]},
  {"name": "Citroen", "models": [{"name": "C1"}, {"name": "C2"}, {"name": "C3"}]},
  {"name": "Dacia", "models": [{"name": "Duster"}, {"name": "Logan"}, {"name": "Sandero"}]}
]

具体的错误是…?你不也需要允许选项吗?