Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
Ajax

Ajax: Read Response Headers from Fetch

- 21.06.26 - ErcanOPAK

📋 Headers Contain Metadata

Server sends headers with response. Read response headers for content type, cache, rate limits, authentication.

📝 Reading Headers

fetch('/api/data')
  .then(response => {
    // Read specific header
    const contentType = response.headers.get('Content-Type');
    const cacheControl = response.headers.get('Cache-Control');
    const rateLimit = response.headers.get('X-RateLimit-Remaining');
    
    console.log('Content-Type:', contentType);
    console.log('Rate limit remaining:', rateLimit);
    
    // Check if header exists
    if (response.headers.has('X-Custom-Header')) {
      console.log('Custom header present');
    }
    
    // Iterate all headers
    for (let [key, value] of response.headers) {
      console.log(`${key}: ${value}`);
    }
    
    return response.json();
  });

🎯 Useful Headers

// Content
Content-Type: application/json
Content-Length: 1024
Content-Encoding: gzip

// Caching
Cache-Control: max-age=3600
ETag: "abc123"
Last-Modified: Mon, 15 Jan 2024 12:00:00 GMT

// Rate limiting
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1705334400

// Authentication
WWW-Authenticate: Bearer
Set-Cookie: session=abc123

// CORS
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE

💡 Use Cases

  • Check rate limits (avoid hitting limits)
  • Verify content type (JSON, HTML, etc.)
  • Cache management (ETag, Cache-Control)
  • Authentication (Set-Cookie, WWW-Authenticate)
  • Debugging (server headers)

“API rate limit headers helped me implement backoff. Read headers, adjust request frequency. Essential for robust API clients.”

— API Client Developer

Related posts:

Ajax: Use keep-alive to Reuse HTTP Connections

Modern Fetch with Async/Await

AJAX: REST API Documentation with OpenAPI

Post Views: 3

Post navigation

JavaScript: Understand the Event Loop for Async Programming
Git: Use Git Merge to Combine Branches

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (940)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (624)
  • Add Constraint to SQL Table to ensure email contains @ (590)
  • Average of all values in a column that are not zero in SQL (554)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (526)
  • Find numbers with more than two decimal places in SQL (468)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps
  • Photoshop: Fix a Color Profile Mismatch That Makes Printed Output Look Nothing Like What You Saw On Screen
  • WordPress: Fix Search Results That Return Pages From a Theme You Deactivated Months Ago
  • Visual Studio: Fix a Test Project That Builds Fine Alone but Fails to Discover Any Tests After a NuGet Restore
  • ASP.NET Core: Fix a File Upload That Times Out on Slow Connections Only Because Kestrel’s Minimum Data Rate Feature Kicked In
  • JavaScript: Fix an Array Destructuring Default Value That Silently Never Applies Because null Was Passed Instead of Undefined

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (940)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com