繁体   English   中英

预检响应中的 Access-Control-Allow-Headers 不允许 Angularjs 请求标头字段 Access-Control-Allow-Headers

[英]Angularjs Request header field Access-Control-Allow-Headers is not allowed by Access-Control-Allow-Headers in preflight response

我知道有很多重复的问题。我尝试了那里给出的所有解决方案,但仍然无效。

XMLHttpRequest 无法加载http://localhost:3000/api/create 预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Headers。

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;
                }
            };
}]);

节点代码

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 包cors修复了它。我认为错误出在服务器端,就像提到的@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'];

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

这是后端问题。 如果在后端使用sails 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}
  }
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM