Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 以正确的方式设置和覆盖Angular中的请求标头_Angularjs_Angular Http_Angular Http Interceptors_Angular Http Auth - Fatal编程技术网

Angularjs 以正确的方式设置和覆盖Angular中的请求标头

Angularjs 以正确的方式设置和覆盖Angular中的请求标头,angularjs,angular-http,angular-http-interceptors,angular-http-auth,Angularjs,Angular Http,Angular Http Interceptors,Angular Http Auth,由于我们使用的身份验证方法,我需要为所有请求设置一个全局http头。我们有一个身份服务器,使用SSO方法对用户进行身份验证。到目前为止还不错,我们使用了拦截器来全局设置报头。但有时我们需要向不使用任何身份验证方法的第三方API发出请求。 如何覆盖拦截器配置的身份验证标头? 这是解决此问题的推荐方法吗?在拦截器中,您可以编写一些逻辑来决定是否需要添加标头: .factory('AuthHeaderInterceptor', function () { function request(con

由于我们使用的身份验证方法,我需要为所有请求设置一个全局http头。我们有一个身份服务器,使用SSO方法对用户进行身份验证。到目前为止还不错,我们使用了拦截器来全局设置报头。但有时我们需要向不使用任何身份验证方法的第三方API发出请求。 如何覆盖拦截器配置的身份验证标头?
这是解决此问题的推荐方法吗?

在拦截器中,您可以编写一些逻辑来决定是否需要添加标头:

.factory('AuthHeaderInterceptor', function () {

  function request(config) {

    //if 3rd party url, don't add auth header
    if(config.url.indexOf('third_party_url') !== -1) {
      return config;
    }

    config.headers.Authorization = 'auth header';
    return config;
  }

  return {
    request: request
  };
});

谢谢,现在它看起来很明显!也许是最好的办法。还有一件事我想了一下,但我不确定它是否有效:如果我为我的第三方创建了一个服务(顺便问一下,这是一件好事吗?),我能覆盖更难的服务吗?或者实际上它会在拦截器中被覆盖吗?很高兴我能帮上忙!我不知道你说的“越硬越好”是什么意思。据我所知,拦截器将捕获任何HTTP请求(是的,不仅是API调用,甚至是对css/html/js文件的请求)。我不明白为什么为第三方创建服务是一个坏主意,我会说去做。对不起,我的意思是覆盖标题。考虑到您的服务仍在通过angular的
$http
服务,是的,请求将通过拦截器。