HTTP Error 431 - Request Header Field(s) Too Large

tianenpangPRO

9 months ago

Hello guys, we are encountering an HTTP Error 431 - Request Header Field(s) Too Large when deploying our Next.js application using the Nixpacks builder on Railway. We have thoroughly investigated and ruled out other potential causes for this error on our end.

Could you please confirm if there is any request header size limit enforced by Railway? If so, is there a way to increase the allowed size for request headers?

Any guidance or suggestions on resolving this issue would be greatly appreciated, thank you for your help!

1 Replies

tianenpangPRO

9 months ago

4b7ea996-5769-4729-abf5-aba577a03dd8


9 months ago

please send a link that show this error


tianenpangPRO

9 months ago

Hi, since our app restricts access after authentication, we can’t provide a public URL at the moment, but below are the detailed steps to reproduce 🙏🏻

Steps to reproduce:

  1. Go to https://zigma.io

  2. Click Sign In in the top right

  3. You’ll be redirected to https://app.zigma.io

  4. Sign in or sign up and social login is available

  5. Open the Network tab in the browser's developer tools

  6. Refresh the page and you'll see requests with a 431 status code in the Network panel


tianenpangPRO

9 months ago

Please let me know if you need any further information


9 months ago

We have thoroughly investigated and ruled out other potential causes for this error on our end.
can you shine some light on how you've come to this conclusion?


9 months ago

just on [https://app.zigma.io/dashboard/](https://app.zigma.io/dashboard/) i do not see any fetch reqs that are failing


tianenpangPRO

9 months ago

can you shine some light on how you've come to this conclusion?

  1. Disabled Cloudflare proxy, using only DNS (issue persists)

  2. Simulated the deployment environment locally with Docker (no issues found)

  3. No relevant logs in Next.js (no issues found)

At this point, I can't confirm if there are any additional limitations in Railway or Nixpacks 🤔


9 months ago

to be perfectly honest with you, thats unfortunately not a very compressive test


tianenpangPRO

9 months ago

just on https://[app.zigma.io](app.zigma.io)/dashboard/ i do not see any fetch reqs that are failing

Did you visit https://zigma.io first? Some cookies are set there and shared with the subdomain (app.zigma.io), which leads to the Request Header Field(s) Too Large issue

1283844415512645600
1283844415869423900


9 months ago

gotcha


9 months ago

nope no errors still


tianenpangPRO

9 months ago

to be perfectly honest with you, thats unfortunately not a very compressive test

You're right, since this issue is quite tricky and first time encountering it 😢 any suggestions would be greatly appreciated


9 months ago

have you tried running your site locally and sending artificially large headers to your app via curl or postman?


9 months ago

no errors here too, even when going to main dashboard or main page

1283850624651362300


9 months ago

you could try in a incognito window?


9 months ago

or maybe something about your specific session is too big that may cause some issue with headers, fresh social login account would be a nice test


tianenpangPRO

9 months ago

have you tried running your site locally and sending artificially large headers to your app via curl or postman?

I tried setting 10+ cookies with different names for the auth token and included them in the request, but couldn’t reproduce the issue locally. (the request header size during testing was around 18 KB, which is much larger than in production)


tianenpangPRO

9 months ago

or maybe something about your specific session is too big that may cause some issue with headers, fresh social login account would be a nice test

Thank you for your response, unfortunately, similar issues are also occurring with some new users with diff browsers


tianenpangPRO

9 months ago

What’s confusing now is where this response is coming from 🤔

1283853767464452000


9 months ago

can you attempt the same test with this -


tianenpangPRO

9 months ago

with the same request headers?


9 months ago

yep


9 months ago

send headers as big or bigger than what you send to your production app when you are getting that 431


tianenpangPRO

9 months ago

after testing step by step, the response is consistently successful


tianenpangPRO

9 months ago

for the 431 request, I noticed that the x-railway-request-id is missing from the response headers, can this be understood as the request not yet reaching Railway? 🤔


9 months ago

your domain is behind cloudflare right?


tianenpangPRO

9 months ago

Yeah, but DNS only


9 months ago

i have additional logging in place, can you try it again?


tianenpangPRO

9 months ago

Just tried

1283870993449750500


9 months ago

send the headers here please


tianenpangPRO

9 months ago

these are the headers from the minimal issue isolation

Accept: "text/x-component",
Next-Action: "8702f98122602daac9043a744a5517df7c4e6826",
Next-Router-State-Tree: "%5B%22%22%2C%7B%22children%22%3A%5B%22dashboard%22%2C%7B%22children%22%3A%5B%5B%22workspaceId%22%2C%227cfcc9dd-30d2-4a32-8917-1d6f1e16978b%22%2C%22d%22%5D%2C%7B%22children%22%3A%5B%22projects%22%2C%7B%22children%22%3A%5B%22__PAGE__%22%2C%7B%7D%2C%22%2Fdashboard%2F7cfcc9dd-30d2-4a32-8917-1d6f1e16978b%2Fprojects%22%2C%22refresh%22%5D%7D%5D%7D%5D%7D%5D%7D%2Cnull%2Cnull%2Ctrue%5D"

tianenpangPRO

9 months ago


9 months ago

what about the cookie? there is no way thats all the headers


tianenpangPRO

9 months ago

this request info comes from the request's initiator, in other words, the request here resulted in a 431 error 🤔

1283875650419167500


9 months ago

right but that request would also include cookies?


tianenpangPRO

9 months ago

yes, my bad. the default credentials is same-origin, so cookies will be included


9 months ago

please send the same sized headers to that link


tianenpangPRO

9 months ago

sent


9 months ago

200?


tianenpangPRO

9 months ago

yeah, getting 200 with total 8.22KB content

1283878711938121700


9 months ago

7682 bytes of just headers, and cookie itself is only 6395 bytes


9 months ago

I don't think you are replaying the request to my endpoint correctly, those are miniscule sizes


tianenpangPRO

9 months ago

I can confirm that I included all the headers from the 431 request, I've double-checked each request header

1283880086638035000


tianenpangPRO

9 months ago

Could you please check the complete HTTP logs for Project ID: 4b7ea996-5769-4729-abf5-aba577a03dd8? I don't see any records of the 431 error in my HTTP log panel.


9 months ago

im not able to do that right now, sorry


tianenpangPRO

9 months ago

Is there a way to specify the Node version for the Nixpacks builder? 👀


9 months ago

yep! -


tianenpangPRO

9 months ago

How can I request to view the complete HTTP logs? 👀


9 months ago

im sorry but that request is not something we can fulfil right now


tianenpangPRO

9 months ago

It looks like the node version isn't following the NIXPACKS_NODE_VERSION 🤔

1283888507533660200
1283888507810480000


9 months ago

why do you say that? it says node 20 in that table


tianenpangPRO

9 months ago

will it use the same minor version as NIXPACKS_NODE_VERSION? 🤔


9 months ago

Only a major version can be specified. For example, 18.x or 20.


tianenpangPRO

9 months ago

Is there any way to determine if these 431 requests have reached Railway?


9 months ago

does your app itself not log requests?


tianenpangPRO

9 months ago

The error fetch is from Next.js and fetch itself for rendering, but it's unclear which program / process returned the 431 (Railway or something else, the Cloudflare is DNS only already)


9 months ago

railway would return a plaintext response when you exceed the header limit size, you have since shown me an html page


youssefsiam38HOBBY

9 months ago

I have the same issue, and I can tell it is railway as I am not using cloudflare proxy and the response includes the header (Server: railway-edge)

I am ready to provide any additional information for this if it is needed


9 months ago

Please open your own thread, OP was not running into any Railway limitations, but you might be.