Get your own Node server
const http = require('http');

// Create HTTP server
const server = http.createServer((req, res) => {
  // Method 1: Set individual headers with setHeader
  res.setHeader('Content-Type', 'application/json');
  res.setHeader('Cache-Control', 'max-age=3600');
  res.setHeader('X-Custom-Header', 'Method 1');
  
  // Get a header value
  const contentType = res.getHeader('Content-Type');
  console.log(`Content-Type header: ${contentType}`);
  
  // Check if a header exists
  console.log(`Has Cache-Control header: ${res.hasHeader('Cache-Control')}`);
  
  // Get all header names
  console.log('Header names:', res.getHeaderNames());
  
  // Get all headers as an object
  console.log('All headers:', res.getHeaders());
  
  // Remove a header
  res.removeHeader('X-Custom-Header');
  console.log(`After removal, has X-Custom-Header: ${res.hasHeader('X-Custom-Header')}`);
  
  // Method 2: Set multiple headers with writeHead
  res.writeHead(200, {
    'Content-Type': 'application/json',
    'X-Custom-Header': 'Method 2',
    'X-Powered-By': 'Node.js'
  });
  
  // Send JSON response
  const responseObject = {
    message: 'Headers demonstration',
    headers: Object.fromEntries(
      Object.entries(res.getHeaders())
    ),
    headersSent: res.headersSent
  };
  
  // End the response
  res.end(JSON.stringify(responseObject, null, 2));
});

// Start server
const PORT = 3001;
server.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}/`);
  
  // Make a test request to the server
  http.get(`http://localhost:${PORT}`, (response) => {
    console.log('\nResponse Headers:');
    console.log(JSON.stringify(response.headers, null, 2));
    
    let data = '';
    response.on('data', (chunk) => {
      data += chunk;
    });
    
    response.on('end', () => {
      console.log('\nResponse Body:');
      console.log(data);
      server.close();
    });
    
  }).on('error', (err) => {
    console.error('Error making test request:', err);
    server.close();
  });
});

// Handle server errors
server.on('error', (err) => {
  console.error('Server error:', err);
});

              
Server running at http://localhost:3001/
Content-Type header: application/json
Has Cache-Control header: true
Header names: [ 'content-type', 'cache-control', 'x-custom-header' ]
All headers: {
  'content-type': 'application/json',
  'cache-control': 'max-age=3600',
  'x-custom-header': 'Method 1'
}
After removal, has X-Custom-Header: false

Response Headers:
{
  "content-type": "application/json",
  "x-powered-by": "Node.js",
  "date": "Wed, 18 Jun 2025 06:39:05 GMT",
  "connection": "close",
  "transfer-encoding": "chunked"
}

Response Body:
{
  "message": "Headers demonstration",
  "headers": {
    "x-powered-by": "Node.js",
    "content-type": "application/json"
  },
  "headersSent": true
}