📖 Scenario: You are building an Angular app that talks to a server. Sometimes you need to add extra information to every request, like a secret token.Interceptors help you change requests before they go out.
🎯 Goal: Create an Angular HTTP interceptor that adds a custom header X-Custom-Token with value abc123 to every outgoing HTTP request.
📋 What You'll Learn
Create an Angular interceptor class named AuthInterceptor
Add the header X-Custom-Token with value abc123 to all HTTP requests
Register the interceptor in the providers array using HTTP_INTERCEPTORS
Use the intercept method with parameters req and next
💡 Why This Matters
🌍 Real World
Interceptors are used in real Angular apps to add tokens, handle errors, or log requests automatically.
💼 Career
Understanding interceptors is important for Angular developers working on secure and maintainable web applications.
Progress0 / 4 steps
1
Create the interceptor class
Create an Angular class called AuthInterceptor that implements HttpInterceptor. Import HttpInterceptor from @angular/common/http. Add the method intercept(req, next) that returns next.handle(req).
Angular
Hint
Remember to import HttpInterceptor and create the intercept method that returns next.handle(req).
2
Add the custom header
Inside the intercept method, clone the req object and add a header X-Custom-Token with value abc123. Use req.clone({ setHeaders: { 'X-Custom-Token': 'abc123' } }) and assign it to a variable modifiedReq. Then pass modifiedReq to next.handle().
Angular
Hint
Use req.clone to add headers without changing the original request.
3
Register the interceptor provider
In your Angular module or component providers array, add a provider object with provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, and multi: true. Import HTTP_INTERCEPTORS from @angular/common/http.
Angular
Hint
Use multi: true to allow multiple interceptors.
4
Add the provider to the module
Add the interceptorProvider to the providers array of your Angular module or component decorator. For example, in @NgModule({ providers: [interceptorProvider] }).
Angular
Hint
Put interceptorProvider inside the providers array in your module.
Practice
(1/5)
1. What is the main purpose of an HTTP interceptor in Angular?
easy
A. To modify HTTP requests before they are sent
B. To create new HTTP requests from scratch
C. To handle user input events
D. To style components dynamically
Solution
Step 1: Understand the role of interceptors
Interceptors are designed to catch HTTP requests and responses to modify or handle them.
Step 2: Identify the correct purpose
Among the options, only modifying HTTP requests before sending matches the interceptor's role.
Final Answer:
To modify HTTP requests before they are sent -> Option A
Quick Check:
Interceptor purpose = modify requests [OK]
Hint: Interceptors change requests before sending [OK]
Common Mistakes:
Thinking interceptors create requests
Confusing interceptors with event handlers
Assuming interceptors style components
2. Which method is used to safely modify an HTTP request inside an Angular interceptor?
easy
A. req.clone()
B. req.change()
C. req.update()
D. req.modify()
Solution
Step 1: Recall Angular HTTP request immutability
HTTP requests are immutable, so you cannot change them directly.
Step 2: Use the clone method to modify
The correct way is to create a copy with changes using req.clone().
Final Answer:
req.clone() -> Option A
Quick Check:
Modify request = req.clone() [OK]
Hint: Use req.clone() to change requests safely [OK]
Common Mistakes:
Trying to modify request directly
Using non-existent methods like req.modify()
Confusing clone with update or change
3. Given this interceptor code snippet, what will be the value of the 'Authorization' header in the outgoing request?
C. next.handle should be called with a cloned request
D. Headers cannot be set in interceptors
Solution
Step 1: Check method existence on req
The HttpRequest object is immutable and does not have a setHeaders method.
Step 2: Understand correct way to set headers
Headers must be set by cloning the request with new headers using req.clone().
Final Answer:
req.setHeaders is not a function -> Option B
Quick Check:
setHeaders method does not exist [OK]
Hint: HttpRequest is immutable; no setHeaders method [OK]
Common Mistakes:
Trying to call setHeaders directly
Ignoring immutability of HttpRequest
Thinking headers can't be changed at all
5. You want to add a custom header 'X-App-Version' with value '1.0' to all outgoing HTTP requests in your Angular app. Which is the best way to do this?
hard
A. Add the header manually in every HTTP call
B. Modify the HttpClient service to include the header
C. Create an interceptor that clones requests and sets the header, then register it globally
D. Use a component to add the header before each request
Solution
Step 1: Understand global header addition
Manually adding headers everywhere is error-prone and repetitive.
Step 2: Use interceptor for centralized modification
Interceptors allow modifying all requests in one place by cloning and setting headers, then registering globally.
Final Answer:
Create an interceptor that clones requests and sets the header, then register it globally -> Option C
Quick Check:
Global header addition = interceptor + clone + register [OK]
Hint: Use interceptor to add headers globally [OK]
Common Mistakes:
Adding headers manually in every call
Trying to modify HttpClient directly
Using components for HTTP header changes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.