منتقي الرموز التعبيرية لا يستخدم عناوين CDN للرموز التعبيرية المخصصة

الوصف

مسارات الرموز التعبيرية القياسية لا يتم تحويلها إلى عناوين URL لشبكة توصيل المحتوى (CDN)، بينما يتم تحويل مسارات الرموز التعبيرية للمسؤولين بشكل صحيح.

الدليل

وحدة تحكم قياسية (لا يوجد تحويل لشبكة توصيل المحتوى):

وحدة تحكم المسؤول (تحويل صحيح باستخدام EmojiSerializer):

يجب تحويل مسارات الرموز التعبيرية القياسية إلى عناوين URL لشبكة توصيل المحتوى (CDN) مثل مسارات الرموز التعبيرية للمسؤولين.

إعجابَين (2)

هل ترى استخدام هذه الروابط في واجهة المستخدم؟ أشك في أنه يتم تحويلها إلى روابط CDN في تطبيق JavaScript قبل عرضها.

لقد تحققت وأؤكد أن الرموز التعبيرية تستخدم عناوين URL لـ S3 مباشرة (تبدأ بـ //) في المخرجات المعروضة، وليس عناوين URL لشبكة توصيل المحتوى (CDN).

ما هي الصفحة التي ترى هذا عليها؟

يمكنك رؤية هذا في صفحة منشئ المنشور عند استخدام منتقي الرموز التعبيرية. عند تحميل الرموز التعبيرية المخصصة، فإنها تستخدم نقاط نهاية S3 مباشرة، مثل:

https://assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com/original/3X/1/d/1de8f76096f76cf393640bdcff387ec9ae33dd3e.gif

هذا يوضح أن المسارات لا يتم تحويلها إلى عناوين URL لشبكة توصيل المحتوى (CDN) كما هو متوقع.


اختبار الرموز التعبيرية المخصصة :awthanks:

:up_arrow: هذا يتم شحنه من شبكة توصيل المحتوى (CDN) الخاصة بـ S3… لدينا مشكلة في المحدد نفسه @j.jaffeux

لا يستخدم شبكة توصيل المحتوى (CDN) الخاصة بـ S3 للرموز التعبيرية المخصصة

تستخدم واجهة المستخدم هذه شبكة توصيل المحتوى (CDN) الخاصة بـ S3

لذا، هذا خاص جدًا بمحدد الرموز التعبيرية، وتحسين العنوان هنا.

إعجاب واحد (1)

شكرا لك، هذا يجب أن يصلح الأمر:

3 إعجابات

شكراً لك على طلب السحب الخاص بك الذي يتيح استخدام شبكة توصيل المحتوى (CDN) للرموز التعبيرية المخصصة.

بينما يطلب إصلاح الواجهة الأمامية الخاص بك عناوين CDN للرموز التعبيرية بشكل صحيح، إلا أنني قلق بشأن أمان الواجهة الخلفية.
لا يزال نقطة النهاية https://meta.discourse.org/emojis.json تكشف عن عناوين URL لمصدر S3 مثل //assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com/original/3X/6/1/61e481320406f0f82ed780db3f04056128191613.png، والتي يمكن أن تؤدي إلى إساءة استخدام خبيثة وفواتير S3 مفرطة.

لأمان أفضل، أقترح إرجاع عناوين CDN مباشرة، على غرار كيفية التعامل مع الرموز التعبيرية غير المخصصة.

إليك محاولتي لإصلاح الكود:

class EmojisController < ApplicationController
  def index
    emojis = Emoji.allowed.group_by(&:group)
    
    emojis.each do |_, emoji_list|
      emoji_list.each do |emoji|
        emoji.url = Discourse.store.cdn_url(emoji.url) if emoji.url.present?
      end
    end
    
    render json: MultiJson.dump(emojis)
  end
  def search_aliases
    render json: MultiJson.dump(Emoji.search_aliases)
  end
end

نعم، أعلم أننا نفعل ذلك مباشرةً للرموز التعبيرية غير المخصصة في emoji.rb، وهو ما أفضل من وحدة التحكم. أريد التأكد من أن هذا لن يسبب مشاكل، لذا قمت بأبسط إصلاح في الوقت الحالي، لكنني سأتعمق في هذا الأمر في المستقبل.

إعجابَين (2)

إغلاق لأن المشكلة الأصلية تم إصلاحها، لا تتردد في فتح طلب ميزة آخر للمتابعة.

هذه الأصول صغيرة وعامة بشكل عام، ويبدو أن المخاطر منخفضة.

إعجابَين (2)