【发布时间】:2017-05-18 00:22:53
【问题描述】:
我正在尝试使用 chrome 开发控制台调试我的 Angular 应用程序。我想从 Angular 向本地服务器发送一个获取请求。我尝试了以下方法:
$http = angular.element($0).injector().get('$http');
$base64 = angular.element($0).injector().get('$base64');
var auth = $base64.encode("user:passwd");
var authHeaders = {"Authorization": "Basic " + auth,"Access-Control-Allow-Origin":"*"};
$http.get("url",{headers:authHeaders,method:"GET"})
阅读此答案后: https://stackoverflow.com/a/30296149/1496826
我认为自定义标题是问题所在。因此,我尝试将授权标头放在正文中:
$http.get("url",{data: {"Authorization": "Basic " + auth,"Access-Control-Allow-Origin":"*"},method:"GET"})
但我仍然遇到同样的错误:
XMLHttpRequest 无法加载“url”。没有“访问控制允许来源” 请求的资源上存在标头。原点“空”是 因此不允许访问。响应的 HTTP 状态代码为 401。
同样的 get 请求在 Postman 中运行良好:
var settings = {
"async": true,
"crossDomain": true,
"url": "url",
"method": "GET",
"headers": {
"authorization": "Basic bWdhcasdasd",
"cache-control": "no-cache",
"postman-token": "XXXXXX-XXXXXX-xXXXX-xXXXX"
}
}
我尝试了其他几种变体,例如 - $http 默认/通用标头等,但一切都失败了。请帮忙。
【问题讨论】:
-
你有没有尝试过一个简单的不经过身份验证的请求,看看它是否有效?比如:$http({ method: 'GET', url: '/someUrl' }).then(function successCallback(response) { }, function errorCallback(response) { });
标签: angularjs http http-headers google-chrome-devtools angular-http