Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: x-forwarded-port header is 'undefined' when no port in url #60484

Merged
merged 18 commits into from
Mar 12, 2024

Conversation

yuvalotem
Copy link
Contributor

@yuvalotem yuvalotem commented Jan 10, 2024

What?

See this issue - #61133

following this change #57815 x-forwarded-port header value is 'undefined' if the URL has no port

Why?

x-forwarded-port 'undefined' makes other http-proxy throw 405 error for the invalid header value

How?

Give default 80 port if the URL has no port

Copy link
Contributor

@Ethan-Arrowood Ethan-Arrowood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking good @yuvalotem - can you come up with a test for it perhaps? You may be able to modify an existing one too. I will also look into this and then we can land your changes. Thank you!

@Ethan-Arrowood Ethan-Arrowood self-assigned this Mar 6, 2024
@ijjk
Copy link
Member

ijjk commented Mar 11, 2024

Failing test suites

Commit: ab9642c

pnpm test-dev test/development/app-hmr/hmr.test.ts (PPR)

  • app-dir-hmr > filesystem changes > should update server components pages when env files is changed (edge)
Expand output

● app-dir-hmr › filesystem changes › should update server components pages when env files is changed (edge)

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40387/env/edge", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (development/app-hmr/hmr.test.ts:77:25)

Read more about building and testing Next.js in contributing.md.

TURBOPACK=1 pnpm test test/integration/next-image-new/loader-config-edge-runtime/test/index.test.ts (turbopack)

  • Image Loader Config with Edge Runtime > dev mode > should add "src" to img1 based on the loader config
  • Image Loader Config with Edge Runtime > dev mode > should add "srcset" to img1 based on the loader config
  • Image Loader Config with Edge Runtime > dev mode > should add "src" to img2 based on the loader prop
  • Image Loader Config with Edge Runtime > dev mode > should add "srcset" to img2 based on the loader prop
Expand output

● Image Loader Config with Edge Runtime › dev mode › should add "src" to img1 based on the loader config

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  45 | describe('Image Loader Config with Edge Runtime', () => {
  46 |   describe('dev mode', () => {
> 47 |     beforeAll(async () => {
     |     ^
  48 |       appPort = await findPort()
  49 |       app = await launchApp(appDir, appPort)
  50 |       browser = await webdriver(appPort, '/')

  at beforeAll (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:47:5)
  at describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:46:3)
  at Object.describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:45:1)

● Image Loader Config with Edge Runtime › dev mode › should add "srcset" to img1 based on the loader config

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  45 | describe('Image Loader Config with Edge Runtime', () => {
  46 |   describe('dev mode', () => {
> 47 |     beforeAll(async () => {
     |     ^
  48 |       appPort = await findPort()
  49 |       app = await launchApp(appDir, appPort)
  50 |       browser = await webdriver(appPort, '/')

  at beforeAll (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:47:5)
  at describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:46:3)
  at Object.describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:45:1)

● Image Loader Config with Edge Runtime › dev mode › should add "src" to img2 based on the loader prop

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  45 | describe('Image Loader Config with Edge Runtime', () => {
  46 |   describe('dev mode', () => {
> 47 |     beforeAll(async () => {
     |     ^
  48 |       appPort = await findPort()
  49 |       app = await launchApp(appDir, appPort)
  50 |       browser = await webdriver(appPort, '/')

  at beforeAll (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:47:5)
  at describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:46:3)
  at Object.describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:45:1)

● Image Loader Config with Edge Runtime › dev mode › should add "srcset" to img2 based on the loader prop

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  45 | describe('Image Loader Config with Edge Runtime', () => {
  46 |   describe('dev mode', () => {
> 47 |     beforeAll(async () => {
     |     ^
  48 |       appPort = await findPort()
  49 |       app = await launchApp(appDir, appPort)
  50 |       browser = await webdriver(appPort, '/')

  at beforeAll (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:47:5)
  at describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:46:3)
  at Object.describe (integration/next-image-new/loader-config-edge-runtime/test/index.test.ts:45:1)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev test/e2e/app-dir/not-found/group-route/index.test.ts (PPR)

  • app dir - not-found - group route > with runtime = edge > should use the not-found page under group routes
Expand output

● app dir - not-found - group route › with runtime = edge › should use the not-found page under group routes

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:42637/blog", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/not-found/group-route/index.test.ts:12:25)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev test/e2e/app-dir/interception-route-prefetch-cache/interception-route-prefetch-cache.test.ts (PPR)

  • interception-route-prefetch-cache > runtime = edge > should render the correct interception when two distinct layouts share the same path structure
Expand output

● interception-route-prefetch-cache › runtime = edge › should render the correct interception when two distinct layouts share the same path structure

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:39469/", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/interception-route-prefetch-cache/interception-route-prefetch-cache.test.ts:9:23)

Read more about building and testing Next.js in contributing.md.

pnpm test-start test/e2e/app-dir/metadata/metadata.test.ts

  • app dir - metadata > basic > should support other basic tags (edge)
Expand output

● app dir - metadata › basic › should support other basic tags (edge)

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:43785/basic-edge", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/metadata/metadata.test.ts:244:25)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev test/development/app-dir/edge-errors-hmr/index.test.ts (PPR)

  • develop - app-dir - edge errros hmr > should recover from build errors when server component error
  • develop - app-dir - edge errros hmr > should recover from build errors when client component error
Expand output

● develop - app-dir - edge errros hmr › should recover from build errors when server component error

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:32779/", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (development/app-dir/edge-errors-hmr/index.test.ts:11:23)

● develop - app-dir - edge errros hmr › should recover from build errors when client component error

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:32779/", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (development/app-dir/edge-errors-hmr/index.test.ts:26:23)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev test/development/app-render-error-log/app-render-error-log.test.ts

  • app-render-error-log > should log the correct values on app-render error with edge runtime
Expand output

● app-render-error-log › should log the correct values on app-render error with edge runtime

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  24 |     })
  25 |
> 26 |     it('should log the correct values on app-render error with edge runtime', async () => {
     |     ^
  27 |       const outputIndex = next.cliOutput.length
  28 |       await next.fetch('/edge')
  29 |

  at it (development/app-render-error-log/app-render-error-log.test.ts:26:5)
  at fn (lib/e2e-utils.ts:316:5)
  at describe (lib/e2e-utils.ts:309:3)
  at Object.<anonymous> (development/app-render-error-log/app-render-error-log.test.ts:4:19)

Read more about building and testing Next.js in contributing.md.

pnpm test-start test/e2e/app-dir/app-css/index.test.ts (PPR)

  • app dir - css > css support > chunks > should bundle css resources into chunks
Expand output

● app dir - css › css support › chunks › should bundle css resources into chunks

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  287 |
  288 |       describe('chunks', () => {
> 289 |         it('should bundle css resources into chunks', async () => {
      |         ^
  290 |           const html = await next.render('/dashboard')
  291 |
  292 |           expect(

  at it (e2e/app-dir/app-css/index.test.ts:289:9)
  at describe (e2e/app-dir/app-css/index.test.ts:288:7)
  at describe (e2e/app-dir/app-css/index.test.ts:18:5)
  at fn (lib/e2e-utils.ts:316:5)
  at describe (lib/e2e-utils.ts:309:3)
  at Object.<anonymous> (e2e/app-dir/app-css/index.test.ts:4:19)

Read more about building and testing Next.js in contributing.md.

pnpm test-start test/e2e/app-dir/metadata-edge/index.test.ts

  • app dir - Metadata API on the Edge runtime > should render OpenGraph image meta tag correctly
Expand output

● app dir - Metadata API on the Edge runtime › should render OpenGraph image meta tag correctly

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  22 |     })
  23 |
> 24 |     it('should render OpenGraph image meta tag correctly', async () => {
     |     ^
  25 |       const html$ = await next.render$('/')
  26 |       const ogUrl = new URL(html$('meta[property="og:image"]').attr('content'))
  27 |       const imageBuffer = await (await next.fetch(ogUrl.pathname)).buffer()

  at it (e2e/app-dir/metadata-edge/index.test.ts:24:5)
  at fn (lib/e2e-utils.ts:316:5)
  at describe (lib/e2e-utils.ts:309:3)
  at Object.<anonymous> (e2e/app-dir/metadata-edge/index.test.ts:4:19)

Read more about building and testing Next.js in contributing.md.

TURBOPACK=1 pnpm test test/integration/react-18/test/index.test.js (turbopack)

  • Concurrent mode in the experimental-edge runtime dev > should not have invalid config warning
  • Concurrent mode in the experimental-edge runtime dev > > should not have the initial route announced
Expand output

● Concurrent mode in the experimental-edge runtime dev › › should not have the initial route announced

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

   5 | export default (context) => {
   6 |   describe('<RouteAnnouncer />', () => {
>  7 |     it('should not have the initial route announced', async () => {
     |     ^
   8 |       const browser = await webdriver(context.appPort, '/')
   9 |       const title = await browser
  10 |         .waitForElementByCss('#__next-route-announcer__')

  at it (integration/react-18/test/strict-mode.js:7:5)
  at describe (integration/react-18/test/strict-mode.js:6:3)
  at Object.runTests (integration/react-18/test/index.test.js:22:17)
  at runTests (lib/next-test-utils.ts:985:13)
  at describe (lib/next-test-utils.ts:941:3)
  at runSuite (lib/next-test-utils.ts:999:10)
  at runTests (integration/react-18/test/index.test.js:48:14)
  at runTests (integration/react-18/test/index.test.js:18:3)
  at Object.runTestsAgainstRuntime (integration/react-18/test/index.test.js:43:1)

● Concurrent mode in the experimental-edge runtime dev › should not have invalid config warning

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  22 |       strictMode(context)
  23 |
> 24 |       it('should not have invalid config warning', async () => {
     |       ^
  25 |         await renderViaHTTP(context.appPort, '/')
  26 |         expect(context.stderr).not.toContain('not exist in this version')
  27 |       })

  at Object.it [as runTests] (integration/react-18/test/index.test.js:24:7)
  at runTests (lib/next-test-utils.ts:985:13)
  at describe (lib/next-test-utils.ts:941:3)
  at runSuite (lib/next-test-utils.ts:999:10)
  at runTests (integration/react-18/test/index.test.js:48:14)
  at runTests (integration/react-18/test/index.test.js:18:3)
  at Object.runTestsAgainstRuntime (integration/react-18/test/index.test.js:43:1)

Read more about building and testing Next.js in contributing.md.

pnpm test-start test/e2e/app-dir/not-found/basic/index.test.ts

  • app dir - not-found - basic > with runtime = edge > should use the not-found page for non-matching routes
  • app dir - not-found - basic > with runtime = edge > should match dynamic route not-found boundary correctly
  • app dir - not-found - basic > with runtime = edge > should escalate notFound to parent layout if no not-found boundary present in current layer
Expand output

● app dir - not-found - basic › with runtime = edge › should use the not-found page for non-matching routes

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:43583/random-content", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/not-found/basic/index.test.ts:55:25)

● app dir - not-found - basic › with runtime = edge › should match dynamic route not-found boundary correctly

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:43583/dynamic", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/not-found/basic/index.test.ts:65:32)

● app dir - not-found - basic › with runtime = edge › should escalate notFound to parent layout if no not-found boundary present in current layer

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:43583/dynamic-layout-without-not-found", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/not-found/basic/index.test.ts:81:32)

Read more about building and testing Next.js in contributing.md.

TURBOPACK=1 pnpm test test/integration/react-streaming/test/index.test.js (turbopack)

  • streaming dev dev > should support streaming for fizz response
  • streaming dev dev > should not stream to crawlers or google pagerender bot
  • streaming dev dev > should render 500 error correctly
  • streaming dev dev > should render fallback if error raised from suspense during streaming
Expand output

● streaming dev dev › should support streaming for fizz response

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  24 |
  25 | export default function (context, { env }) {
> 26 |   it('should support streaming for fizz response', async () => {
     |   ^
  27 |     async function testStreamingResponse(pathname) {
  28 |       await fetchViaHTTP(context.appPort, pathname, null, {}).then(
  29 |         async (response) => {

  at it (integration/react-streaming/test/streaming.js:26:3)
  at Object.runTests (integration/react-streaming/test/index.test.js:19:14)
  at runTests (lib/next-test-utils.ts:985:13)
  at describe (lib/next-test-utils.ts:941:3)
  at runSuite (lib/next-test-utils.ts:999:10)
  at Object.<anonymous> (integration/react-streaming/test/index.test.js:29:12)

● streaming dev dev › should not stream to crawlers or google pagerender bot

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  57 |   })
  58 |
> 59 |   it('should not stream to crawlers or google pagerender bot', async () => {
     |   ^
  60 |     const res1 = await fetchViaHTTP(
  61 |       context.appPort,
  62 |       '/streaming',

  at it (integration/react-streaming/test/streaming.js:59:3)
  at Object.runTests (integration/react-streaming/test/index.test.js:19:14)
  at runTests (lib/next-test-utils.ts:985:13)
  at describe (lib/next-test-utils.ts:941:3)
  at runSuite (lib/next-test-utils.ts:999:10)
  at Object.<anonymous> (integration/react-streaming/test/index.test.js:29:12)

● streaming dev dev › should render 500 error correctly

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  94 |   })
  95 |
> 96 |   it('should render 500 error correctly', async () => {
     |   ^
  97 |     const errPaths = ['/err', '/err/render']
  98 |     const promises = errPaths.map(async (pagePath) => {
  99 |       const html = await renderViaHTTP(context.appPort, pagePath)

  at it (integration/react-streaming/test/streaming.js:96:3)
  at Object.runTests (integration/react-streaming/test/index.test.js:19:14)
  at runTests (lib/next-test-utils.ts:985:13)
  at describe (lib/next-test-utils.ts:941:3)
  at runSuite (lib/next-test-utils.ts:999:10)
  at Object.<anonymous> (integration/react-streaming/test/index.test.js:29:12)

● streaming dev dev › should render fallback if error raised from suspense during streaming

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  108 |   })
  109 |
> 110 |   it('should render fallback if error raised from suspense during streaming', async () => {
      |   ^
  111 |     const html = await renderViaHTTP(context.appPort, '/err/suspense')
  112 |     expect(html).toContain('error-fallback')
  113 |   })

  at it (integration/react-streaming/test/streaming.js:110:3)
  at Object.runTests (integration/react-streaming/test/index.test.js:19:14)
  at runTests (lib/next-test-utils.ts:985:13)
  at describe (lib/next-test-utils.ts:941:3)
  at runSuite (lib/next-test-utils.ts:999:10)
  at Object.<anonymous> (integration/react-streaming/test/index.test.js:29:12)

Read more about building and testing Next.js in contributing.md.

@ijjk
Copy link
Member

ijjk commented Mar 11, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary yuvalotem/next.js patch-2 Change
buildDuration 13.6s 13.7s N/A
buildDurationCached 7.3s 6.2s N/A
nodeModulesSize 198 MB 198 MB ⚠️ +416 B
nextStartRea..uration (ms) 430ms 429ms N/A
Client Bundles (main, webpack)
vercel/next.js canary yuvalotem/next.js patch-2 Change
2453-HASH.js gzip 30.5 kB 30.5 kB N/A
3304.HASH.js gzip 181 B 181 B
3f784ff6-HASH.js gzip 53.7 kB 53.7 kB N/A
8299-HASH.js gzip 5.04 kB 5.04 kB N/A
framework-HASH.js gzip 45.2 kB 45.2 kB
main-app-HASH.js gzip 242 B 242 B
main-HASH.js gzip 32.2 kB 32.2 kB N/A
webpack-HASH.js gzip 1.68 kB 1.68 kB N/A
Overall change 45.6 kB 45.6 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary yuvalotem/next.js patch-2 Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary yuvalotem/next.js patch-2 Change
_app-HASH.js gzip 196 B 197 B N/A
_error-HASH.js gzip 184 B 184 B
amp-HASH.js gzip 505 B 505 B
css-HASH.js gzip 324 B 325 B N/A
dynamic-HASH.js gzip 2.5 kB 2.5 kB N/A
edge-ssr-HASH.js gzip 258 B 258 B
head-HASH.js gzip 352 B 352 B
hooks-HASH.js gzip 370 B 371 B N/A
image-HASH.js gzip 4.21 kB 4.21 kB
index-HASH.js gzip 259 B 259 B
link-HASH.js gzip 2.67 kB 2.67 kB N/A
routerDirect..HASH.js gzip 314 B 312 B N/A
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 309 B 309 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 6.57 kB 6.57 kB
Client Build Manifests
vercel/next.js canary yuvalotem/next.js patch-2 Change
_buildManifest.js gzip 481 B 484 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary yuvalotem/next.js patch-2 Change
index.html gzip 528 B 529 B N/A
link.html gzip 539 B 541 B N/A
withRouter.html gzip 523 B 523 B
Overall change 523 B 523 B
Edge SSR bundle Size
vercel/next.js canary yuvalotem/next.js patch-2 Change
edge-ssr.js gzip 95.1 kB 95.1 kB N/A
page.js gzip 3.06 kB 3.06 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary yuvalotem/next.js patch-2 Change
middleware-b..fest.js gzip 626 B 626 B
middleware-r..fest.js gzip 151 B 151 B
middleware.js gzip 25.5 kB 25.5 kB N/A
edge-runtime..pack.js gzip 839 B 839 B
Overall change 1.62 kB 1.62 kB
Next Runtimes
vercel/next.js canary yuvalotem/next.js patch-2 Change
app-page-exp...dev.js gzip 171 kB 171 kB
app-page-exp..prod.js gzip 96.5 kB 96.5 kB
app-page-tur..prod.js gzip 98.3 kB 98.3 kB
app-page-tur..prod.js gzip 92.7 kB 92.7 kB
app-page.run...dev.js gzip 149 kB 149 kB
app-page.run..prod.js gzip 91.2 kB 91.2 kB
app-route-ex...dev.js gzip 21.3 kB 21.3 kB
app-route-ex..prod.js gzip 15 kB 15 kB
app-route-tu..prod.js gzip 15 kB 15 kB
app-route-tu..prod.js gzip 14.8 kB 14.8 kB
app-route.ru...dev.js gzip 21 kB 21 kB
app-route.ru..prod.js gzip 14.8 kB 14.8 kB
pages-api-tu..prod.js gzip 9.52 kB 9.52 kB
pages-api.ru...dev.js gzip 9.8 kB 9.8 kB
pages-api.ru..prod.js gzip 9.52 kB 9.52 kB
pages-turbo...prod.js gzip 22.3 kB 22.3 kB
pages.runtim...dev.js gzip 22.9 kB 22.9 kB
pages.runtim..prod.js gzip 22.3 kB 22.3 kB
server.runti..prod.js gzip 50.5 kB 50.5 kB N/A
Overall change 897 kB 897 kB
build cache Overall increase ⚠️
vercel/next.js canary yuvalotem/next.js patch-2 Change
0.pack gzip 1.56 MB 1.56 MB ⚠️ +258 B
index.pack gzip 105 kB 105 kB N/A
Overall change 1.56 MB 1.56 MB ⚠️ +258 B
Diff details
Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for server.runtime.prod.js

Diff too large to display

Commit: ab9642c

Copy link
Contributor

@Ethan-Arrowood Ethan-Arrowood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I cannot determine a way to test this issue using a local Next.js server (even a custom one).

I've created vercel/vercel#11254 to test this e2e. I've asserted that the currently described behavior in #61133 is valid (see commented output vercel/vercel#11254 (comment)).

Once this is landed, we can verify the new test passes and then land it to prevent regressions.

@Ethan-Arrowood Ethan-Arrowood enabled auto-merge (squash) March 11, 2024 23:47
@Ethan-Arrowood Ethan-Arrowood enabled auto-merge (squash) March 12, 2024 16:41
@Ethan-Arrowood Ethan-Arrowood merged commit fb11904 into vercel:canary Mar 12, 2024
61 checks passed
Ethan-Arrowood added a commit that referenced this pull request Mar 18, 2024
### What?
See this issue - #61133

following this change #57815
`x-forwarded-port` header value is 'undefined' if the URL has no port

### Why?
x-forwarded-port 'undefined' makes other http-proxy throw 405 error for
the invalid header value

### How?
Give default 80 port if the URL has no port

---------

Co-authored-by: Ethan Arrowood <ethan@arrowood.dev>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 27, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants