gpt4 book ai didi

angularjs - 将http拦截器限制为特定域

转载 作者:行者123 更新时间:2023-12-03 03:41:26 26 4
gpt4 key购买 nike

我正忙于在 Angular.JS 中构建一个小型后台 Web 客户端,它直接与我的 API 对话。对于身份验证,我使用 OAUTH2,其中使用 http 拦截器将访问 token 包含到请求中。但是,拦截器是全局的,因此不仅会检查我对 API 的请求/响应,还会检查任何其他 http 调用,例如静态 html 和模板。

我只想将拦截器绑定(bind)到我的 API 调用。

如果拦截器中没有令人讨厌的domain-string-comparing-if-语句,这可能吗?

最佳答案

您可以围绕 $http 创建一个服务包装器,负责处理 OAuth 特定内容(例如添加 header 等)并使用该服务(而不是 $http )用于 OAuth 相关请求。

<小时/>

示例实现:

app.factory('HttpOAuth', function ($http) {
// Augments the request configuration object
// with OAuth specific stuff (e.g. some header)
function getAugmentedConfig(cfg) {
var config = cfg || {};
config.headers = config.headers || {};
config.headers.someHeaderName = 'some-header-value';
return config;
}

// The service object to be returned (`$http` wrapper)
var serviceObj = {};

// Create wrappers for methods WITHOUT data
['delete', 'get', 'head', 'jsonp'].forEach(function (method) {
serviceObj[method] = function (url, config) {
var config = getAugmentedConfig(config);
return $http[method](url, config);
};
});

// Create wrappers for methods WITH data
['post', 'put'].forEach(function (method) {
serviceObj[method] = function (url, data, config) {
var config = getAugmentedConfig(config);
return $http[method](url, data, config);
};
});

// Return the service object
return serviceObj;
});
<小时/>

另请参阅此 short demo

关于angularjs - 将http拦截器限制为特定域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968129/

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