首页 > 解决方案 > 浏览器获取工作,但 AngularJS $http 服务有 CORS 错误

问题描述

我想了解为什么 AngularJS $http服务不起作用而fetch API 起作用。

下面是 AngularJS 代码:

const $http = angular.element(document.body).injector().get('$http')
$http({
  method: 'GET',
  url: 'http://192.168.1.126:8080/saiku/rest/saiku/admin/datasources/',
  headers: {
    'Authorization': 'Basic YWRtaW46YWRtaW4='
  }
})

这给了我这个错误:

angular.js:12845 OPTIONS http://192.168.1.126:8080/saiku/rest/saiku/admin/datasources/ 403 () 对预检请求的响应未通过访问控制检查:否 'Access-Control-Allow-Origin ' 请求的资源上存在标头。因此,不允许访问源“ http://localhost:8081 ”。响应具有 HTTP 状态代码 403。

奇怪的是:

fetch('http://192.168.1.126:8080/saiku/rest/saiku/admin/datasources/', {
    method: 'GET',
    headers: {
         'Authorization': 'Basic YWRtaW46YWRtaW4='
    }
}).then((r) => r.json()).then(console.log)

给我正确的回应

我知道这可能是一个 CORS 错误,但我已经在我的 tomcat 上添加了 CORS 过滤器,所以一切都应该工作(并且 fetch 工作)。这是 fetch 或 $http 中的错误吗?

标签: angularjshttpcorsfetch

解决方案



推荐阅读