هدرهای HTTP - تفاوت بین نوع محتوای application/x-javascript و text/javascript
تفاوت این هدرها چیست؟
Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript
کدام یک بهتر است و چرا؟
لطفاً نگوید که آنها یکسان هستند - اگر یکسان بودند، سه تای آنها وجود نداشت. من میدانم که هر دو کار میکنند - اما دوست دارم تفاوت آنها را بدانم.
پاسخ شماره ۱
نوع MIME جاوااسکریپت
هنگام ارسال محتوای جاوااسکریپت، شما باید از text/javascript مطابق با RFC 9239 استفاده کنید.
نام مستعار
application/javascript، application/x-javascript، text/javascript1.0، text/javascript1.1، text/javascript1.2، text/javascript1.3، text/javascript1.4، text/javascript1.5، text/jscript و text/livescript نامهای مستعار منسوخ آن هستند. اگر شما ابزاری مینویسید که جاوااسکریپت را مصرف میکند (مثلاً یک کلاینت HTTP)، باید در نظر بگیرید که آنها را برای سازگاری با نسخههای قدیمی پشتیبانی کنید.
تاریخ
نوع MIME text/javascript تا زمانی که RFC 4329 تلاش کرد آن را با application/javascript جایگزین کند، طبق عرف استفاده میشد.
این صرفاً یک تغییر بود تا گروههای نوع MIME text/* و application/* در جایی که ممکن است معنای یکنواختی داشته باشند. (نوعهای MIME text/* برای محتوای قابل خواندن توسط انسان طراحی شدهاند، جاوااسکریپت برای انتقال مستقیم معنا به انسان طراحی نشده است).
صنعت به طور گستردهای مشخصات را نادیده گرفت، بنابراین مشخصات فعلی تلاش را رها کرد.
پیشوندهای X
برخی از نوعهای MIME ذکر شده در اینجا از پیشوند x- استفاده میکنند. این پیشوند برای نشان دادن نوعهای MIME آزمایشی که استاندارد نشده بودند، استفاده میشد. طبق RFC 6648، این قرارداد منسوخ شده است.
اچتیامال
در حالی که این سؤال درباره HTTP است، ارزش دارد به ویژگی type مرتبط در HTML نیز اشاره شود.
هنگام بارگذاری یک اسکریپت سنتی، پیشنهاد میکنم که صفت type را به طور کامل حذف کنید. این صفت هیچ تأثیری ندارد اما این فرصت را ایجاد میکند که با یک اشتباه تایپی مرورگر آن را به عنوان یک نوع اسکریپت ناشناخته در نظر بگیرد و نادیده بگیرد. اگر آن را ارائه میکنید، از text/javascript استفاده کنید زیرا برخی از نوعهای MIME منسوخ شده شناخته نخواهند شد.
هنگام بارگذاری یک ماژول جاوااسکریپت، از type="module" استفاده کنید (توجه داشته باشید که این مقدار نوع MIME نیست!).
پاسخ شماره ۲
نوعهای MIME که با x- شروع میشوند استاندارد نشدهاند. در مورد جاوااسکریپت، این کمی قدیمی است. علاوه بر این، قطعه کد دوم
<?Header('Content-Type: text/javascript');?>
نیاز دارد short_open_tags فعال باشد. شما باید از آن اجتناب کنید.
<?php Header('Content-Type: text/javascript');?>
با این حال، نوع MIME کاملاً درست برای جاوااسکریپت این است
application/javascript
http://www.iana.org/assignments/media-types/application/index.html
پاسخ شماره ۳
تا مه ۲۰۲۲، text/javascript بار دیگر نوع مورد ترجیح است (رجوع کنید به RFC 9239)
ثبت نوع رسانهای که در اینجا آمده است به دو دسته اصلی تقسیم میشود: (1) تنها نوع رسانهای «text/javascript» که اکنون به طور رایج استفاده میشود و (2) تمام انواع رسانهای که منسوخ شدهاند
و
تمام ثبتها به این سند به عنوان مرجع اشاره خواهند کرد. یادداشت قدیمی که بیان میکرد نوع رسانه "text/javascript" "منسوخ شده به نفع application/javascript" است، حذف شده است. یادداشت قدیمی که بیان میکرد نوع رسانه "text/ecmascript" "منسوخ شده به نفع application/ecmascript" است، حذف شده است. IANA یادداشت "منسوخ شده به نفع text/javascript" را به تمام ثبتها به جز "text/javascript" اضافه کرده است؛ به عبارت دیگر، این یادداشت به ثبتهای "text/ecmascript"، "application/javascript" و "application/ecmascript" اضافه شده است.
