javascript - 无法在 AngularJS 中设置 HTTP Basic Auth header

标签 javascript angularjs basic-authentication

我编写了以下 Controller ,用于使用 Angular JS 测试 HTTP Basic Auth。

function TestCtrl($scope, $http, Base64){
    $http.defaults.headers.common.Authorization = 'Basic ' + Base64.encode('admin:secret');
    $http.jsonp( 'http://localhost:5000/test'+'/?callback=JSON_CALLBACK', {query:{isArray:true }}).
    then(function (response) {
         $scope.test = response.data;
     });
}

我可以看到在 console.log($http.defaults.headers) 时设置的 header 。但是,当我在 Firefox 中使用 Chrome 开发人员工具栏或 Firebug 检查请求 header 时,我看不到授权 header 。

接收请求的服务器未获得授权 header 。

我做错了什么?

最佳答案

我相信答案是“是的,对于常规的 AJAX 请求,您应该能够设置正确的身份验证 header ”

但是,当您使用 JSONP(基于示例)时,您并没有进行标准的 XHR 调用,这会将答案更改为“否”

如果您无法使用 JSONP,我认为您无法发送任何身份验证 header 。 JSONP 的工作原理与 Angular 的 $http.get 不同。例如。

参见 http://schock.net/articles/2013/02/05/how-jsonp-really-works-examples/有关详细信息,但简短版本是 JSONP 放下一个 <script>获取一些数据的标签。返回的数据围绕服务器提供的数据调用您提供的函数(在您的示例中为 JSON_CALLBACK)。因此,您无法更改 header ——该请求是一个 HTTP GET 请求,就像您将脚本标记的 URL 粘贴到浏览器的地址栏中一样。

关于javascript - 无法在 AngularJS 中设置 HTTP Basic Auth header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924360/

相关文章:

javascript - 如何将 $q 传递给 Angular Directive(指令)链接函数?

javascript - Highcharts 与 Firefox 不兼容

php - 接收jquery函数发送的php文件数据

javascript - Angularjs ng-if 不工作但记录 bool 值显示预期值

angularjs - Angular 和 Karma 测试使用 $resource 并返回 promise 的服务

nginx - 基本身份验证/ip 过滤器仅适用于 Ingress NGINX 中包含特殊字符的路径

SvelteKit:如何使用 www-authenticate header 保护页面

python - Flask Basic HTTP Auth 使用登录页面

javascript - Bootstrap 进度条出现奇怪的跳跃行为

javascript - 从 A 点到 B 点的图像过渡