gpt4 book ai didi

angularjs - 外部 url 的 Http 拦截器

转载 作者:行者123 更新时间:2023-12-04 20:39:51 25 4
gpt4 key购买 nike

我编写了一个 http 拦截器来为每个请求添加身份验证 token 。在我的 html 中,当我单击链接时,不会调用此拦截器。不知道为什么会这样?

我的拦截器代码 -

angular.module('demo', [])
.factory('httpAuthorizationInterceptor',['$window', function ($window) {
return {
request: function (config) {
if (config.url.indexOf('login') == -1) {
config.headers['Authorization'] = 'Session ' +<session_id>;
}
return config || $q.when(config);
}
};
}])

我的 HTML -
<a data-ng-href="http://example.com/view"></a>

最佳答案

您的 anchor 标记实际上不会进行 ajax 调用,即 http拦截器用于拦截通过 angular 进行的 ajax 调用。单击该 anchor 标记就像在浏览器中打开一个 URL。

为了进行 ajax 调用:您需要按以下方式调整代码:

angular.module('demo', [])
.config(['$httpProvider', function ($httpProvider) {

var interceptor = [function() {
return {
'request': function(config) {
if (config.url.indexOf('login') == -1) {
config.headers['Authorization'] = 'Session ' + <session_id>;
}
return config;
}
};
}];

$httpProvider.interceptors.push(interceptor);
}]);

现在你的 Controller 代码看起来像这样:
$scope.doSomething = function() {
$http({method: 'GET', url: 'http://example.com/view'}).then(function(data) {
// success
});
};

你的 HTML 代码将是:
<a href="doSomething()"></a>

唯一的问题是,您进行 ajax 调用的外部 url 要么位于同一域中,要么必须支持跨源请求。

希望这可以帮助!

关于angularjs - 外部 url 的 Http 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28476256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com