如何仅为某些域添加标头到$ http

Fra*_*isc 6 angularjs angularjs-http

是否可以仅为指定的域设置标头?

执行此操作的"正常"方式为所有调用添加了标头,甚至是例如检索HTML模板的调用.

$http.defaults.headers.common['Authorization']='...';
Run Code Online (Sandbox Code Playgroud)

到目前为止,除了使用$ http拦截器之外,我看不到任何其他方式,但如果你能想到一个,我很好奇.

谢谢.

Jon*_*han 8

创建拦截器是我处理这个问题的方法.我不确定另一种方式,所以,这是一个例子.:)

您可以创建一个注册的拦截器$httpProvider.Angular将传递默认的配置对象进行修改,您可以在那里修改标头.

这里有一个基于Angular $ http doc页面的快速示例:

//register interceptor as a service
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
    return {
        // optional method
        'request': function(config) {
            //Figure out which headers you want and set them just for this request.
            config.headers = {"myHeader":"Special"}

            return config;
        }
    };
});

$httpProvider.interceptors.push('myHttpInterceptor');
Run Code Online (Sandbox Code Playgroud)