DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Newsletter
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Node.js Microservices Architecture: A Complete Guide
  • Refresh Token Rotation in Node.js: Stopping Token Theft Without Logging Users Out
  • Stop Writing Dialect-Specific SQL: A Unified Query Builder for Node.js
  • Lambda-Driven API Design: Building Composable Node.js Endpoints With Functional Primitives

Trending

  • The Man Who Invented Selenium Also Built Its Replacement
  • The Pipeline Failed, But the Infrastructure Changed
  • Beyond State Consistency: Preventing Stale Decisions in AI Agent Systems
  • Why Successful Tech Transformation Starts With Clarity

Draft This article hasn't been published, so readers can't see it.

In moderation This article is waiting for review, so readers can't see it yet.

Deleted This article has been deleted, so readers can't see it.

  1. DZone
  2. Coding
  3. JavaScript
  4. Resolving HTTP Headers Sent Error in Node.js

Resolving HTTP Headers Sent Error in Node.js

In this short post, I will show you how to resolve ERR_HTTP_HEADERS_SENT, a very common error in Node.js.

By 
Johnny Simpson
·
Feb. 18, 22 · Code Snippet
Post on X (opens in a new tab) Share on LinkedIn (opens in a new tab)
7.8K Views

Join the DZone community Save articles, join the discussion, and download Refcards and Trend Reports with a free account.

Join for free Already a member? Log in

When using express and Node.js, we will sometimes get this error:

 
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at new NodeError (node:internal/errors:277:15)
    at ServerResponse.setHeader (node:_http_outgoing:563:11)
    at ServerResponse.header (/node_modules/express/lib/response.js:771:10)
    at file:///link/to/file/app.js:309:13 {
    code: 'ERR_HTTP_HEADERS_SENT'


This is quite a confusing error if you aren't familiar with HTTP headers. This error arises when you send more than 1 response to the user or client. That means the receiver is getting two responses when it should only be getting one. 

To solve this, make sure you are only sending one response.

How To Solve

This can often be caused when you send a response to the client, and an asynchronous piece of code then sends a second response after the first. Look in your code, you may be accidentally using res.send twice. For example, the below will cause the error:

 
app.get('/app', async function(req, res) {
    /* Don't do this! Remove one of the res.send functions to remove the error */
    await User.find({username: req.headers.username}, function(err, items) {
        res.send('User');
    })
    res.send('Hello');
})


Note: other res functions, such as res.redirect will cause the same issue, i.e. the below code is also wrong:

 
app.get('/app', function(req, res) {
    /* Don't do this! Remove one of these functions to remove the error */    
    await User.find({username: req.headers.username}, function(err, items) {
        res.redirect('/app/login');    
    })
    res.send('Hello');
})


Your code should instead look like this, with only one res function:

 
app.get('/app', function(req, res) {
    res.redirect('/app/login');
})


That's all! I hope this post helps you resolve this common HTTP error. 

Node.js

Published at DZone with permission of Johnny Simpson. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Node.js Microservices Architecture: A Complete Guide
  • Refresh Token Rotation in Node.js: Stopping Token Theft Without Logging Users Out
  • Stop Writing Dialect-Specific SQL: A Unified Query Builder for Node.js
  • Lambda-Driven API Design: Building Composable Node.js Endpoints With Functional Primitives

Partner Resources

×

Comments

Loading comments

The comments didn't load

Please try again in a moment.

Likes

Loading

The next likes didn't load. Please try again.

The likes didn't load

Please try again in a moment.

See who liked this

Log in or join DZone for free to see who liked this article.

Log in Join for free
  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook