diff --git a/CHANGELOG.md b/CHANGELOG.md index 907979d565..065d1c2cae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,12 @@ Our versioning strategy is as follows: - Minor: may include breaking changes in framework packages (e.g. framework upgrades, new features, improvements) - Major: may include breaking changes in core packages (e.g. major architectural changes, major features) +## 22.1.3 + +### 🐛 Bug Fixes + +* `[sitecore-jss-nextjs]` Addressed an issue where the x-middleware-rewrite header caused redirects to fail during execution on Netlify. ([#1915](https://github.com/Sitecore/jss/pull/1915)) + ## 22.1.2 ### 🐛 Bug Fixes diff --git a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts index 5afee7728e..d917059805 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts @@ -1,20 +1,19 @@ /* eslint-disable no-unused-expressions */ /* eslint-disable @typescript-eslint/no-empty-function */ /* eslint-disable dot-notation */ -import chai, { use } from 'chai'; -import chaiString from 'chai-string'; -import sinonChai from 'sinon-chai'; -import sinon, { spy } from 'sinon'; -import { NextRequest, NextResponse } from 'next/server'; -import { debug } from '@sitecore-jss/sitecore-jss'; +import { debug, GraphQLRequestClient } from '@sitecore-jss/sitecore-jss'; import { REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, SiteResolver, } from '@sitecore-jss/sitecore-jss/site'; +import chai, { use } from 'chai'; +import chaiString from 'chai-string'; +import { NextRequest, NextResponse } from 'next/server'; +import sinon, { spy } from 'sinon'; +import sinonChai from 'sinon-chai'; import { RedirectsMiddleware } from './redirects-middleware'; -import { GraphQLRequestClient } from '@sitecore-jss/sitecore-jss'; use(sinonChai); const expect = chai.use(chaiString).expect; @@ -1430,10 +1429,11 @@ describe('RedirectsMiddleware', () => { }); }); - it('should remove x-middleware-next header and redirect 301', async () => { + it('should remove x-middleware-next/x-middleware-rewrite headers and redirect 301', async () => { const siteName = 'foo'; const res = NextResponse.redirect('http://localhost:3000/found', {}); res.headers.set('x-middleware-next', '1'); + res.headers.set('x-middleware-rewrite', '1'); res.cookies.set('sc_site', siteName); const req = createRequest({ nextUrl: { @@ -1480,6 +1480,10 @@ describe('RedirectsMiddleware', () => { url: '', }); + // Check that the headers were not removed + expect(finalRes.headers.has('x-middleware-next')).to.equal(false); + expect(finalRes.headers.has('x-middleware-rewrite')).to.equal(false); + expect(siteResolver.getByHost).not.called.to.equal(true); expect(siteResolver.getByName).to.be.calledWith(siteName); expect(fetchRedirects).to.be.calledWith(siteName); diff --git a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts index cfd9fcd865..1839f6fa5b 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts @@ -282,6 +282,7 @@ export class RedirectsMiddleware extends MiddlewareBase { }); if (res?.headers) { redirect.headers.delete('x-middleware-next'); + redirect.headers.delete('x-middleware-rewrite'); } return redirect; }