Bird
Raised Fist0
Node.jsframework~20 mins

Setting response headers in Node.js - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

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
Challenge - 5 Problems
🎖️
Response Header Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Node.js HTTP response header code?
Consider the following Node.js code snippet using the native HTTP module. What will be the value of the 'Content-Type' header sent to the client?
Node.js
import http from 'http';

const server = http.createServer((req, res) => {
  res.setHeader('Content-Type', 'application/json');
  res.setHeader('Content-Type', 'text/html');
  res.end();
});

server.listen(3000);
A'application/json'
BBoth 'application/json' and 'text/html' headers are sent
C'text/html'
DNo 'Content-Type' header is sent
Attempts:
2 left
💡 Hint
Think about what happens when you set the same header twice in Node.js response.
component_behavior
intermediate
2:00remaining
Which option correctly sets multiple headers in a Node.js HTTP response?
You want to set both 'Content-Type' to 'application/json' and 'Cache-Control' to 'no-cache' in a Node.js HTTP response. Which code snippet correctly does this?
Ares.writeHead(200, {'Content-Type': 'application/json', 'Cache-Control': 'no-cache'});
Bres.headers = {'Content-Type': 'application/json', 'Cache-Control': 'no-cache'};
C
res.setHeader('Content-Type', 'application/json');
res.setHeader('Cache-Control', 'no-cache');
Dres.setHeaders({'Content-Type': 'application/json', 'Cache-Control': 'no-cache'});
Attempts:
2 left
💡 Hint
Check the correct method names and usage for setting multiple headers at once.
🔧 Debug
advanced
2:00remaining
Why does this Node.js code fail to send the custom header?
Examine the code below. Why is the 'X-Custom-Header' not visible in the response headers?
Node.js
import http from 'http';

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.setHeader('X-Custom-Header', '12345');
  res.end('Hello');
});

server.listen(3000);
ABecause res.end must be called before setting headers.
BBecause res.setHeader is called after res.writeHead, headers set after writeHead are ignored.
CBecause the server is missing a call to res.flushHeaders() before res.end().
DBecause 'X-Custom-Header' is not a valid header name.
Attempts:
2 left
💡 Hint
Think about the order of setting headers and sending the response status line.
📝 Syntax
advanced
2:00remaining
Which option correctly sets a header with multiple values in Node.js?
You want to set the 'Set-Cookie' header with two cookies in a Node.js HTTP response. Which code snippet is syntactically correct and sends both cookies?
Ares.setHeader('Set-Cookie', ['cookie1=value1; cookie2=value2']);
Bres.setHeader('Set-Cookie', 'cookie1=value1; cookie2=value2');
Cres.setHeader('Set-Cookie', 'cookie1=value1, cookie2=value2');
Dres.setHeader('Set-Cookie', ['cookie1=value1', 'cookie2=value2']);
Attempts:
2 left
💡 Hint
Check how Node.js expects multiple header values for the same header.
state_output
expert
3:00remaining
What headers are sent by this Node.js HTTP server code?
Analyze the following code. Which headers will the client receive in the response?
Node.js
import http from 'http';

const server = http.createServer((req, res) => {
  res.setHeader('Content-Type', 'text/plain');
  res.setHeader('X-Test', 'first');
  res.setHeader('X-Test', 'second');
  res.writeHead(200, {'X-Test': 'third', 'Cache-Control': 'no-store'});
  res.end('Done');
});

server.listen(3000);
A{'Content-Type': 'text/plain', 'X-Test': 'third', 'Cache-Control': 'no-store'}
B{'Content-Type': 'text/plain', 'X-Test': 'second', 'Cache-Control': 'no-store'}
C{'Content-Type': 'text/plain', 'X-Test': 'first', 'Cache-Control': 'no-store'}
D{'Content-Type': 'text/plain', 'X-Test': 'second'}
Attempts:
2 left
💡 Hint
Consider the order of setHeader and writeHead calls and which headers take precedence.

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

  1. Step 1: Understand what response headers do

    Response headers tell the browser details about the response, like content type or caching rules.
  2. 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.
  3. Final Answer:

    To provide the browser with important information about the response -> Option B
  4. 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

  1. Step 1: Recall Node.js method for setting headers

    Node.js uses response.setHeader(name, value) to set headers.
  2. Step 2: Match syntax with options

    Only response.setHeader('Content-Type', 'application/json'); uses setHeader correctly; others use incorrect method names.
  3. Final Answer:

    response.setHeader('Content-Type', 'application/json'); -> Option A
  4. 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?
const http = require('http');
const server = http.createServer((req, res) => {
  res.setHeader('Content-Type', 'text/html');
  res.setHeader('Content-Type', 'application/json');
  res.end('{}');
});
server.listen(3000);
medium
A. 'text/html'
B. Both 'text/html' and 'application/json'
C. No Content-Type header is sent
D. 'application/json'

Solution

  1. Step 1: Understand header overwriting behavior

    Setting the same header twice overwrites the previous value in Node.js.
  2. Step 2: Identify final header value

    The second setHeader call sets 'Content-Type' to 'application/json', replacing 'text/html'.
  3. Final Answer:

    'application/json' -> Option D
  4. Quick Check:

    Last setHeader call wins [OK]
Hint: Last setHeader call overwrites previous [OK]
Common Mistakes:
  • Thinking both headers are sent
  • Assuming first header stays
  • Believing no header is sent
4. Identify the error in this Node.js code that tries to set a response header:
const http = require('http');
const server = http.createServer((req, res) => {
  res.write('Hello');
  res.setHeader('Content-Type', 'text/plain');
  res.end();
});
server.listen(3000);
medium
A. res.end() is missing a parameter
B. The method setHeader does not exist on res
C. Headers must be set before writing the response body
D. The server.listen port number is invalid

Solution

  1. Step 1: Check order of header setting and response writing

    Headers must be set before sending any part of the response body.
  2. Step 2: Identify the error in code order

    res.write('Hello') sends body first, so setHeader after it causes error.
  3. Final Answer:

    Headers must be set before writing the response body -> Option C
  4. 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

  1. Step 1: Understand setting multiple headers at once

    writeHead allows setting status and multiple headers before sending response.
  2. 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.
  3. 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).
  4. Final Answer:

    res.writeHead(200, { 'Content-Type': 'application/json', 'Cache-Control': 'no-cache' }); res.end(JSON.stringify(data)); -> Option A
  5. Quick Check:

    Use writeHead for multiple headers before response [OK]
Hint: Use writeHead to set many headers at once before response [OK]
Common Mistakes:
  • Using setHeader with object (like Express)
  • Setting headers after res.end
  • Confusing setHeader and writeHead usage