Next.js Discord

Discord Forum

Header missing in Edge runtime

Unanswered
Brown bear posted this in #help-forum
Open in Discord
Avatar
Brown bearOP
When running this code on the Edge runtime, the headers I set in the middleware response.headers.set('x-foo-bar', 'foo-bar');) are missing. However, when running the same code on the NodeJS runtime, the headers appear correctly.

Is this expected behavior on the Edge runtime? If so, could you explain why this happens? Additionally, is there a fix or workaround to ensure the headers are set properly?

import { headers } from 'next/headers';

export const runtime = 'edge' // or node;

export default async function Page() {
  const nextHeaders = headers();

  return (
    <code>
      <pre>{JSON.stringify(Array.from(nextHeaders.entries()), null, 2)}</pre>
    </code>
  );
};

1 Reply

Avatar
Brown bearOP
Link to example:

https://edge-headers-issue-git-main-ryan-georges-projects.vercel.app/debug/edge
https://edge-headers-issue-git-main-ryan-georges-projects.vercel.app/debug/node

export function middleware() {
    const response = NextResponse.next();

    response.headers.set('x-test', 'foo-bar');

    return response;
}