CodeGenieApp / CodeGenieApp/serverless-express
Lambda@Edge origin response event errors out with 502 error because read-only header was deleted
- Vorherrschende Sprache
- JavaScript
- Sterne
- 5.3k
- Forks
- 676
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
The Cloudfront request responds with:
```The Lambda function result failed validation: The function tried to add, delete, or change a read-only 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.```
From CloudWatch logs:
```ERROR Validation error: Lambda function result failed validation, the function tried to delete read-only header, headerName : Transfer-Encoding.```
I've figured out a workaround that is to just copy the header manually, but I wonder if the library should've taken care of that itself?
```js
import { getCurrentInvoke } from '@vendia/serverless-express';
router.get('/*', (req, res) => {
const { event } = getCurrentInvoke();
if (event.Records[0].cf.response.headers['transfer-encoding']) {
res.setHeader(
'Transfer-Encoding',
event.Records[0].cf.response.headers['transfer-encoding'][0].value,
);
}
```
Beitragsleitfaden
Rechercherichtung
Verfolge den Lambda@Edge-Origin-Response-Pfad und die Verarbeitung der Response-Header rund um getCurrentInvoke(), mit Fokus auf den Transfer-Encoding-Header, der im CloudWatch-Validierungsfehler angezeigt wird. Reproduziere die CloudFront-502-Response und überprüfe, dass die resultierende Response nicht mehr versucht, einen schreibgeschützten Header zu löschen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- aws, express, javascript, node.js
- Bereich
- backend, cloud
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100