From 747f2fccd8a757b287f25636294f863332281746 Mon Sep 17 00:00:00 2001 From: Jeffrey Yang Date: Wed, 9 Jul 2025 20:15:34 +0000 Subject: [PATCH 1/2] added cors headers for share images --- apps/blob_storage/models.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/blob_storage/models.py b/apps/blob_storage/models.py index 072c3817..1f918265 100644 --- a/apps/blob_storage/models.py +++ b/apps/blob_storage/models.py @@ -14,8 +14,7 @@ class AbstractBlobStorage(models.Model): content_type = models.CharField(max_length=64, blank=True) size_bytes = models.PositiveIntegerField(default=0) contents = CompressedBinaryField( - max_length=htk_setting('HTK_BLOB_CONTENT_MAX_LENGTH'), - editable=True + max_length=htk_setting('HTK_BLOB_CONTENT_MAX_LENGTH'), editable=True ) class Meta: @@ -48,6 +47,21 @@ def as_response(self): self.contents, content_type=self.content_type, ) + + # Add CORS headers for images to allow social media platforms to access them + if self.content_type.startswith('image/'): + response['Access-Control-Allow-Origin'] = '*' + response['Access-Control-Allow-Methods'] = 'GET, HEAD, OPTIONS' + response['Access-Control-Allow-Headers'] = ( + 'Accept, Accept-Language, Content-Language, Content-Type' + ) + response['Access-Control-Max-Age'] = '86400' # 24 hours + # Add cache headers for better performance + response['Cache-Control'] = ( + 'public, max-age=86400, immutable' # 24 hours + ) + response['Vary'] = 'Accept-Encoding' + # response = FileResponse( # self.contents, # as_attachment=True, From 58c6edfeaed016eec7fa1bbd42e85a588a5942cc Mon Sep 17 00:00:00 2001 From: Jeffrey Yang Date: Thu, 10 Jul 2025 16:19:53 +0000 Subject: [PATCH 2/2] fix format --- apps/blob_storage/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/blob_storage/models.py b/apps/blob_storage/models.py index 1f918265..577733a3 100644 --- a/apps/blob_storage/models.py +++ b/apps/blob_storage/models.py @@ -14,7 +14,8 @@ class AbstractBlobStorage(models.Model): content_type = models.CharField(max_length=64, blank=True) size_bytes = models.PositiveIntegerField(default=0) contents = CompressedBinaryField( - max_length=htk_setting('HTK_BLOB_CONTENT_MAX_LENGTH'), editable=True + max_length=htk_setting('HTK_BLOB_CONTENT_MAX_LENGTH'), + editable=True, ) class Meta: