This repository was archived by the owner on Jan 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +36
-1
lines changed
packages/libs/lambda-at-edge Expand file tree Collapse file tree 2 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -297,7 +297,7 @@ const handleOriginRequest = async ({
297
297
}
298
298
}
299
299
300
- const isStaticPage = pages . html . nonDynamic [ uri ] ;
300
+ const isStaticPage = pages . html . nonDynamic [ uri ] ; // plain page without any props
301
301
const isPrerenderedPage = prerenderManifest . routes [ uri ] ; // prerendered pages are also static pages like "pages.html" above, but are defined in the prerender-manifest
302
302
const origin = request . origin as CloudFrontOrigin ;
303
303
const s3Origin = origin . s3 as CloudFrontS3Origin ;
@@ -328,7 +328,9 @@ const handleOriginRequest = async ({
328
328
s3Origin . domainName = normalisedS3DomainName ;
329
329
330
330
S3Check: if (
331
+ // Note: public files and static pages (HTML pages with no props) don't have JS files needed for preview mode, always serve from S3.
331
332
isPublicFile ||
333
+ isStaticPage ||
332
334
( isHTMLPage && ! isPreviewRequest ) ||
333
335
( hasFallback && ! isPreviewRequest ) ||
334
336
( isDataReq && ! isPreviewRequest )
Original file line number Diff line number Diff line change @@ -224,6 +224,39 @@ describe("Lambda@Edge", () => {
224
224
expect ( decodedBody ) . toBe ( "pages/preview.js" ) ;
225
225
expect ( response . status ) . toBe ( 200 ) ;
226
226
} ) ;
227
+
228
+ it ( "HTML page without any props served from S3 on preview mode" , async ( ) => {
229
+ const event = createCloudFrontEvent ( {
230
+ uri : `/terms${ trailingSlash ? "/" : "" } ` ,
231
+ host : "mydistribution.cloudfront.net" ,
232
+ requestHeaders : {
233
+ cookie : [
234
+ {
235
+ key : "Cookie" ,
236
+ value : "__next_preview_data=abc; __prerender_bypass=def"
237
+ }
238
+ ]
239
+ }
240
+ } ) ;
241
+
242
+ const result = await handler ( event ) ;
243
+
244
+ const request = result as CloudFrontRequest ;
245
+
246
+ expect ( request . origin ) . toEqual ( {
247
+ s3 : {
248
+ authMethod : "origin-access-identity" ,
249
+ domainName : "my-bucket.s3.amazonaws.com" ,
250
+ path : "/static-pages" ,
251
+ region : "us-east-1"
252
+ }
253
+ } ) ;
254
+ expect ( request . uri ) . toEqual ( "/terms.html" ) ;
255
+ expect ( request . headers . host [ 0 ] . key ) . toEqual ( "host" ) ;
256
+ expect ( request . headers . host [ 0 ] . value ) . toEqual (
257
+ "my-bucket.s3.amazonaws.com"
258
+ ) ;
259
+ } ) ;
227
260
} ) ;
228
261
229
262
describe ( "Public files routing" , ( ) => {
You can’t perform that action at this time.
0 commit comments