Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Setting Response Headers in Node.js
📖 Scenario: You are building a simple web server using Node.js. You want to send back a response with custom headers to tell the browser how to handle the content.
🎯 Goal: Create a Node.js server that responds to requests with a custom Content-Type header and a X-Custom-Header header.
📋 What You'll Learn
Create a basic HTTP server using Node.js http module
Set the Content-Type header to text/plain
Set a custom header called X-Custom-Header with the value MyHeaderValue
Send a simple text response body
💡 Why This Matters
🌍 Real World
Web servers often need to send headers to control how browsers handle content, such as content type, caching, or security policies.
💼 Career
Understanding how to set response headers is essential for backend developers working with Node.js to build APIs and web servers.
Progress0 / 4 steps
1
Create a basic HTTP server
Write code to import the http module and create a server variable called server using http.createServer().
Node.js
Hint
Use require('http') to import the module and http.createServer() to create the server.
2
Add a request listener function
Add a request listener function to server that takes req and res as parameters.
Node.js
Hint
Pass a function with req and res parameters to http.createServer().
3
Set response headers
Inside the request listener, use res.setHeader() to set the Content-Type header to text/plain and the X-Custom-Header to MyHeaderValue.
Node.js
Hint
Use res.setHeader(name, value) to add headers before sending the response.
4
Send the response and listen on port 3000
Inside the request listener, use res.end() to send the text Hello, world!. Then call server.listen(3000) to start the server on port 3000.
Node.js
Hint
Use res.end() to finish the response and server.listen(3000) to start listening.
Practice
(1/5)
1. What is the purpose of setting response headers in a Node.js server?
easy
A. To execute JavaScript code on the server
B. To provide the browser with important information about the response
C. To store data permanently on the server
D. To create new files on the server
Solution
Step 1: Understand what response headers do
Response headers tell the browser details about the response, like content type or caching rules.
Step 2: Identify the correct purpose
Only To provide the browser with important information about the response describes this role correctly; other options describe unrelated server tasks.
Final Answer:
To provide the browser with important information about the response -> Option B
Quick Check:
Response headers = browser info [OK]
Hint: Headers tell browser about response before body [OK]
Common Mistakes:
Thinking headers run code on server
Confusing headers with server storage
Believing headers create files
2. Which of the following is the correct syntax to set a response header named Content-Type to application/json in Node.js?
easy
A. response.setHeader('Content-Type', 'application/json');
B. response.header('Content-Type', 'application/json');
C. response.set('Content-Type', 'application/json');
D. response.addHeader('Content-Type', 'application/json');
Solution
Step 1: Recall Node.js method for setting headers
Node.js uses response.setHeader(name, value) to set headers.
Step 2: Match syntax with options
Only response.setHeader('Content-Type', 'application/json'); uses setHeader correctly; others use incorrect method names.
Final Answer:
response.setHeader('Content-Type', 'application/json'); -> Option A
Quick Check:
Use setHeader(name, value) [OK]
Hint: Use setHeader method exactly as shown [OK]
Common Mistakes:
Using header() instead of setHeader()
Using set() or addHeader() which don't exist
Wrong method name casing
3. What will be the value of the Content-Type header sent to the client after running this code snippet?
C. Headers must be set before writing the response body
D. The server.listen port number is invalid
Solution
Step 1: Check order of header setting and response writing
Headers must be set before sending any part of the response body.
Step 2: Identify the error in code order
res.write('Hello') sends body first, so setHeader after it causes error.
Final Answer:
Headers must be set before writing the response body -> Option C
Quick Check:
Set headers before body [OK]
Hint: Set headers before any res.write or res.end [OK]
Common Mistakes:
Setting headers after writing body
Thinking setHeader is invalid method
Assuming res.end needs data always
5. You want to set multiple headers including Content-Type as application/json and Cache-Control as no-cache in a Node.js server. Which code snippet correctly sets both headers before sending the response?
hard
A. res.writeHead(200, {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache'
});
res.end(JSON.stringify(data));
B. res.end(JSON.stringify(data));
res.setHeader('Content-Type', 'application/json');
res.setHeader('Cache-Control', 'no-cache');
C. res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(data));
res.setHeader('Cache-Control', 'no-cache');
D. res.setHeader({'Content-Type': 'application/json', 'Cache-Control': 'no-cache'});
res.end(JSON.stringify(data));
Solution
Step 1: Understand setting multiple headers at once
writeHead allows setting status and multiple headers before sending response.
Step 2: Check order and correctness
res.writeHead(200, {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache'
});
res.end(JSON.stringify(data)); sets both headers before res.end, correctly using writeHead.
Step 3: Identify errors in other options
res.setHeader({'Content-Type': 'application/json', 'Cache-Control': 'no-cache'});
res.end(JSON.stringify(data)); incorrectly passes an object to setHeader (expects name, value); B and C set headers after res.end (which sends headers).