sst / open-next

Open source Next.js serverless adapter
https://open-next.js.org
MIT License
3.7k stars 111 forks source link

[Edge] CloudFront Blacklisted headers Server Actions #392

Closed lucasvieirasilva closed 2 months ago

lucasvieirasilva commented 3 months ago

Issue

Deployment Mode

AWS Lambda@Edge

Context

When a server action is called Next.js tries to set the Keep-alive header which it can't be provided in the CloudFront Lambda Edge.

That returns the following response

Status Code: 502

Response:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>502 ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
The Lambda function result failed validation: The function tried to add a blacklisted header.
We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
<BR clear="all">
If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.
<BR clear="all">
<HR noshade size="1px">
<PRE>
Generated by cloudfront (CloudFront)
Request ID: gaOBxQLbSxm0GXcyaL7XMbBVwaAzyQpZ9XhoBm0i2ZBOWn9SZk303g==
</PRE>
<ADDRESS>
</ADDRESS>
</BODY></HTML>

Suggested Fix

OpenNext should remove those blacklisted headers from the lambda response.

conico974 commented 2 months ago

Fixed in #393