Skip to content

Commit 6308671

Browse files
authored
Merge pull request #487 from humanmade/include-referer
Add Referer header support to S3 requests
2 parents 1f30744 + ed04363 commit 6308671

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

src/lambda-handler.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,16 @@ const streamify_handler: StreamifyHandler = async ( event, response ) => {
2424
'X-Amz-Expires'?: string;
2525
'presign'?: string,
2626
key: string;
27+
referer?: string;
2728
};
2829
args.key = key;
2930
if ( typeof args.webp === 'undefined' ) {
3031
args.webp = !! ( event.headers && Object.keys( event.headers ).find( key => key.toLowerCase() === 'x-webp' ) );
3132
}
32-
33+
const refererHeaderKey = Object.keys(event.headers || {}).find(h => h.toLowerCase() === 'referer');
34+
if (refererHeaderKey) {
35+
args.referer = event.headers[refererHeaderKey];
36+
}
3337
// If there is a presign param, we need to decode it and add it to the args. This is to provide a secondary way to pass pre-sign params,
3438
// as using them in a Lambda function URL invocation will trigger a Lambda error.
3539
if ( args.presign ) {

src/lib.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export interface Args {
2424
'X-Amz-Signature'?: string;
2525
'X-Amz-Date'?: string;
2626
'X-Amz-Security-Token'?: string;
27+
referer?: string;
2728
}
2829

2930
export type Config = S3ClientConfig & { bucket: string };
@@ -56,6 +57,12 @@ export async function getS3File( config: Config, key: string, args: Args ): Prom
5657
*/
5758
sign: async request => {
5859
if ( ! args['X-Amz-Algorithm'] ) {
60+
// Add referer to the request headers on non-presigned URLs
61+
// Presigned URLs works without the referer header
62+
if (args.referer) {
63+
request.headers = request.headers || {};
64+
request.headers['referer'] = args.referer;
65+
}
5966
return request;
6067
}
6168
const presignedParamNames = [

0 commit comments

Comments
 (0)