angularjs - 浏览器获取工作,但 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 中的错误吗?
解决方案
推荐阅读
- python - Pytest 无法在 VS 代码中发现测试
- docker - 无法在 Windows 10 中将 Java 客户端应用程序连接到 dockerize ignite 服务器
- python - 对具有值 (1) 的索引求和
- clojure - JVM:是否可以通过远程 Clojure repl 进行修补程序/补丁生产代码?
- javascript - 没有在 javascript 中获取 html 输入值
- python - 更快地启动 webdriver Selenium Python
- android - 如何以编程方式更改android中的应用程序托盘图标?
- django - 为应用程序部署任务创建工具或网站
- .net-core - MSB4057:项目中不存在目标“发布”:在 TeamCity 的 csproj 中
- java - 使用 CompletableFuture 安全吗?会保证异步任务的正确执行吗?