Angularjs请求标题字段Access-Control-Allow-Headers在预检响应中不被Access-Control-Allow-Headers所允许

我知道有很多重复的问题。我尝试了所有的解决scheme,但仍然没有工作。

XMLHttpRequest无法加载http:// localhost:3000 / api / create 。 访问控制 – 允许标题字段在预检响应中不被访问控制允许标题所允许。

angularjs代码

$httpProvider.defaults.headers.common = {}; $httpProvider.defaults.headers.post = {}; $httpProvider.defaults.headers.put = {}; $httpProvider.defaults.headers.patch = {}; $httpProvider.defaults.headers.get = {}; $httpProvider.defaults.headers.common['Access-Control-Allow- Headers'] = '*'; $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; $httpProvider.interceptors.push(['$injector',function($injector) { var mainFactory = $injector.get('mainFactory'); return { request: function(config) { var token = mainFactory.getToken(); config.headers.Authorization = 'Basic '+token; return config; }, response: function(response) { return response; } }; }]); 

nodejs代码

 app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE,OPTIONS'); res.header('Access-Control-Allow-Headers','Content-Type,Authorization'); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Accept"); next(); }); 

感谢您的意见。我通过安装一个npm软件包来解决它。我认为错误是在服务器端,如@ Katana314提到的。

  $httpProvider.defaults.headers.common = {}; $httpProvider.defaults.headers.post = {}; $httpProvider.defaults.headers.put = {}; $httpProvider.defaults.headers.patch = {}; $httpProvider.defaults.headers.get = {}; $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*'; $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; 

所有这些默认标题也可以删除。它工作正常。

这是后端问题。 如果在后端使用api更改cors.js并在这里添加所有的头文件

 module.exports.cors = { allRoutes: true, origin: '*', credentials: true, methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD', headers: 'Origin, X-Requested-With, Content-Type, Accept, Engaged-Auth-Token' }; 
 return $http.post( "url", formData, { transformRequest: angular.identity, headers: {"Content-Type": undefined} } )