هدر HTTP چیست؟ آشنایی با HTTP Headers و کاربرد آن‌ها

هدر HTTP چیست؟ آشنایی با HTTP Headers و کاربرد آن‌ها

هر درخواست و پاسخ HTTP فقط شامل آدرس، متد، کد وضعیت و محتوا نیست. کلاینت و سرور برای انتقال اطلاعات تکمیلی از بخش دیگری به نام هدر HTTP استفاده می‌کنند. هدرها اطلاعاتی درباره درخواست، پاسخ، نوع محتوا، روش تأیید هویت، مرورگر کاربر و فرمت‌های قابل‌قبول منتقل می‌کنند. مرورگر، سرور و برنامه‌های مختلف با بررسی این اطلاعات می‌توانند ارتباط را به‌درستی مدیریت کنند. در قسمت چهارم دوره آموزش پروتکل HTTP با مفهوم HTTP Headers آشنا می‌شویم. سپس تفاوت هدرهای درخواست و پاسخ و هدرهای پرکاربرد Content-Type، Authorization، User-Agent و Accept را بررسی می‌کنیم.

هدر HTTP چیست؟

هدر HTTP یا HTTP Header بخشی از درخواست یا پاسخ HTTP است که اطلاعات تکمیلی درباره ارتباط میان کلاینت و سرور را منتقل می‌کند. برای مثال، هدرها می‌توانند نوع محتوای ارسالی، نوع محتوای قابل‌قبول، اطلاعات مرورگر، زبان موردنظر، اطلاعات ورود کاربر و روش نگهداری پاسخ در حافظه کش را مشخص کنند. هدرها معمولاً محتوای اصلی درخواست یا پاسخ را در خود قرار نمی‌دهند. آن‌ها اطلاعاتی درباره نحوه ارسال، دریافت یا پردازش محتوا ارائه می‌کنند. برای نمونه، زمانی که سرور یک فایل JSON ارسال می‌کند، می‌تواند با هدر زیر نوع محتوا را به کلاینت اعلام کند:

Content-Type: application/json

کلاینت با مشاهده این هدر متوجه می‌شود که محتوای پاسخ با فرمت JSON ارسال شده است و باید آن را بر همین اساس پردازش کند.

هدرها چه نقشی در HTTP دارند؟

هدرها به کلاینت و سرور کمک می‌کنند اطلاعات لازم برای مدیریت ارتباط را در کنار پیام اصلی منتقل کنند. بدون هدرها، طرف دریافت‌کننده اطلاعات کافی درباره نوع محتوا، دسترسی کاربر یا شیوه پردازش پاسخ نخواهد داشت. هدرهای HTTP کاربردهای مختلفی دارند:

  • مشخص‌کردن نوع محتوای درخواست یا پاسخ
  • ارسال اطلاعات تأیید هویت کاربر
  • معرفی مرورگر یا نرم‌افزار ارسال‌کننده درخواست
  • تعیین فرمت‌های قابل‌قبول برای پاسخ
  • مشخص‌کردن زبان موردنظر کاربر
  • مدیریت حافظه کش مرورگر
  • ارسال کوکی‌ها میان مرورگر و سرور
  • اعلام اندازه محتوای ارسالی
  • مدیریت تغییر مسیرها
  • کنترل بعضی تنظیمات امنیتی

هر هدر هدف مشخصی دارد. بعضی هدرها فقط در درخواست، بعضی فقط در پاسخ و برخی دیگر در هر دو مورد استفاده می‌شوند.

ساختار هدر HTTP چگونه است؟

هر هدر معمولاً از یک نام و یک مقدار تشکیل می‌شود. علامت دونقطه نام هدر را از مقدار آن جدا می‌کند.

Header-Name: Header-Value

برای مثال:

Content-Type: application/json

در این نمونه، Content-Type نام هدر و application/json مقدار آن است.

هدرهای مختلف در خط‌های جداگانه قرار می‌گیرند:

Content-Type: application/json 
Accept: application/json 
User-Agent: Mozilla/5.0

نام هدرها به حروف بزرگ و کوچک حساس نیست. بنابراین، Content-Type و content-type از نظر HTTP نام یکسانی دارند. بااین‌حال، معمولاً برای خوانایی بهتر از شکل رایج نام هدر استفاده می‌کنیم.

هدرها در کدام بخش پیام HTTP قرار می‌گیرند؟

هدرها در درخواست و پاسخ HTTP بعد از خط شروع قرار می‌گیرند. یک خط خالی نیز پایان هدرها و شروع بدنه پیام را مشخص می‌کند. نمونه ساده یک درخواست HTTP:

POST /api/products HTTP/1.1 
Host: example.com 
Content-Type: application/json 
Accept: application/json 
Authorization: Bearer token-value 
  { 
    "name": "Laptop", 
    "price": 1200 
  }

خط اول متد، آدرس و نسخه HTTP را مشخص می‌کند. خط‌های بعدی هدرهای درخواست هستند. پس از یک خط خالی، بدنه درخواست قرار می‌گیرد. نمونه ساده یک پاسخ HTTP:

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 32
Cache-Control: no-cache

{
  "id": 25,
  "name": "Laptop"
}

در این پاسخ، خط اول شامل نسخه HTTP و کد وضعیت است. پس از آن هدرهای پاسخ و سپس محتوای اصلی قرار دارند.

Request Header چیست؟

هدر درخواست یا Request Header اطلاعات تکمیلی را از طرف کلاینت برای سرور ارسال می‌کند. مرورگر، برنامه موبایل یا هر کلاینت دیگری می‌تواند این هدرها را همراه درخواست بفرستد. سرور با بررسی هدرهای درخواست می‌تواند اطلاعاتی درباره کلاینت، نوع داده ارسالی، پاسخ مورد انتظار و وضعیت ورود کاربر به دست آورد. نمونه‌ای از هدرهای درخواست:

Host: example.com
Accept: application/json
Content-Type: application/json
Authorization: Bearer token-value
User-Agent: Mozilla/5.0
Accept-Language: fa-IR

هدرهای درخواست می‌توانند اطلاعات زیر را منتقل کنند:

  • نام دامنه مقصد
  • نوع پاسخ قابل‌قبول برای کلاینت
  • نوع اطلاعات موجود در بدنه درخواست
  • اطلاعات تأیید هویت و دسترسی
  • نوع مرورگر یا برنامه ارسال‌کننده
  • زبان موردنظر کاربر
  • کوکی‌های ذخیره‌شده در مرورگر

Response Header چیست؟

هدر پاسخ یا Response Header اطلاعات تکمیلی را از طرف سرور برای کلاینت ارسال می‌کند. این اطلاعات به کلاینت کمک می‌کنند پاسخ را به‌شکل مناسب پردازش کند. نمونه‌ای از هدرهای پاسخ:

Content-Type: application/json
Content-Length: 125
Cache-Control: no-cache
Server: nginx
Set-Cookie: sessionId=12345

هدرهای پاسخ می‌توانند اطلاعات زیر را مشخص کنند:

  • نوع محتوای پاسخ
  • اندازه محتوا
  • قوانین ذخیره پاسخ در حافظه کش
  • اطلاعات مربوط به سرور
  • کوکی‌هایی که مرورگر باید ذخیره کند
  • آدرس جدید برای تغییر مسیر
  • تنظیمات امنیتی پاسخ

تفاوت Request Header و Response Header چیست؟

تفاوت اصلی این دو گروه به جهت انتقال اطلاعات مربوط می‌شود. Request Header از کلاینت به سرور می‌رود، اما Response Header از سرور برای کلاینت ارسال می‌شود.

ویژگیRequest HeaderResponse Header
ارسال‌کنندهکلاینتسرور
دریافت‌کنندهسرورکلاینت
هدف اصلیارائه اطلاعات درباره درخواست و کلاینتارائه اطلاعات درباره پاسخ و سرور
نمونه هدرهاAccept، Authorization و User-AgentServer، Location و Set-Cookie
نوع محتوانوع محتوای بدنه درخواست را اعلام می‌کندنوع محتوای بدنه پاسخ را اعلام می‌کند

بعضی هدرها مانند Content-Type می‌توانند هم در درخواست و هم در پاسخ قرار بگیرند. مفهوم آن‌ها در هر دو حالت به محتوای همان پیام مربوط می‌شود.

هدر Content-Type چیست؟

هدر Content-Type نوع محتوای موجود در بدنه درخواست یا پاسخ را مشخص می‌کند. دریافت‌کننده با بررسی این هدر متوجه می‌شود که داده‌ها با چه فرمتی ارسال شده‌اند. برای مثال، اگر یک API اطلاعات را با فرمت JSON برگرداند، پاسخ می‌تواند هدر زیر را داشته باشد:

Content-Type: application/json

اگر سرور یک صفحه HTML برگرداند، مقدار هدر می‌تواند به‌شکل زیر باشد:

Content-Type: text/html; charset=utf-8

بخش charset=utf-8 نوع کدگذاری نویسه‌ها را مشخص می‌کند. UTF-8 از زبان فارسی و بسیاری از زبان‌های دیگر پشتیبانی می‌کند.

مقادیر پرکاربرد Content-Type عبارت‌اند از:

مقدارنوع محتوانمونه کاربرد
text/htmlمحتوای HTMLصفحه‌های وب
text/plainمتن سادهفایل یا پاسخ متنی
text/cssکد CSSفایل‌های استایل سایت
application/jsonاطلاعات JSONپاسخ و درخواست API
application/xmlاطلاعات XMLسرویس‌های مبتنی بر XML
multipart/form-dataداده‌های چندبخشی فرمارسال فرم همراه فایل
application/x-www-form-urlencodedاطلاعات رمزگذاری‌شده فرمارسال فرم‌های ساده HTML
image/jpegتصویر JPEGنمایش یا دانلود تصویر

انتخاب مقدار درست برای Content-Type اهمیت زیادی دارد. اگر نوع محتوا اشتباه اعلام شود، مرورگر یا برنامه دریافت‌کننده ممکن است نتواند اطلاعات را به‌درستی نمایش یا پردازش کند.

هدر Authorization چیست؟

هدر Authorization برای ارسال اطلاعات تأیید هویت از کلاینت به سرور استفاده می‌شود. سرور با بررسی این هدر تشخیص می‌دهد که درخواست از طرف چه کاربر یا برنامه‌ای ارسال شده و آیا اجازه دسترسی به منبع موردنظر را دارد یا خیر. در بسیاری از APIها، کلاینت یک توکن دسترسی را همراه این هدر ارسال می‌کند:

Authorization: Bearer token-value

عبارت Bearer نوع روش تأیید هویت را مشخص می‌کند و مقدار بعد از آن توکن دسترسی است. برای مثال، ممکن است مشاهده فهرست محصولات برای همه کاربران آزاد باشد، اما ثبت، ویرایش یا حذف محصول فقط برای مدیر سایت مجاز باشد. سرور می‌تواند هدر Authorization را بررسی کند و سپس درباره دسترسی کاربر تصمیم بگیرد. اطلاعات حساس مانند توکن دسترسی نباید در اختیار افراد دیگر قرار بگیرند. همچنین برای محافظت از اطلاعات هنگام انتقال باید از HTTPS استفاده شود. هدر Authorization به‌تنهایی اطلاعات را رمزنگاری نمی‌کند.

هدر User-Agent چیست؟

اطلاعاتی درباره نرم‌افزار ارسال‌کننده درخواست در اختیار سرور قرار می‌دهد. این نرم‌افزار می‌تواند مرورگر، برنامه موبایل، ابزار خط فرمان یا یک برنامه دیگر باشد. یک نمونه ساده از این هدر:

User-Agent: Mozilla/5.0

مقدار واقعی User-Agent معمولاً طولانی‌تر است و می‌تواند اطلاعاتی درباره مرورگر، سیستم‌عامل و موتور پردازش صفحه داشته باشد. سرور می‌تواند از این اطلاعات برای اهداف مختلف استفاده کند:

  • بررسی نوع مرورگر کاربر
  • ارائه نسخه مناسب یک صفحه
  • ثبت آمار مرورگرها و دستگاه‌ها
  • بررسی و تحلیل خطاها
  • شناسایی بعضی ربات‌ها و خزنده‌های وب

البته مقدار User-Agent همیشه قابل اعتماد نیست؛ زیرا کلاینت می‌تواند آن را تغییر دهد. بنابراین، سرور نباید برای تصمیم‌های امنیتی مهم فقط به این هدر تکیه کند.

هدر Accept چیست؟

هدر Accept به سرور اعلام می‌کند که کلاینت چه نوع محتوایی را برای پاسخ می‌پذیرد. سرور می‌تواند با توجه به این هدر، یکی از فرمت‌های پشتیبانی‌شده را انتخاب کند. برای مثال، اگر کلاینت انتظار دریافت اطلاعات JSON را داشته باشد، می‌تواند هدر زیر را ارسال کند:

Accept: application/json

اگر کلاینت چند نوع محتوا را قبول کند، می‌تواند آن‌ها را در یک هدر قرار دهد:

Accept: application/json, text/plain

مرورگرها نیز هنگام درخواست صفحه‌های وب معمولاً چند نوع محتوا را در هدر Accept مشخص می‌کنند. مقدار زیر به این معنی است که کلاینت هر نوع محتوایی را می‌پذیرد:

Accept: */*

تفاوت Content-Type و Accept چیست؟

هدرهای Content-Type و Accept هر دو با نوع محتوا ارتباط دارند، اما مفهوم آن‌ها یکسان نیست. Content-Type نوع محتوایی را مشخص می‌کند که هم‌اکنون در بدنه پیام وجود دارد. Accept نیز نوع محتوایی را اعلام می‌کند که کلاینت می‌خواهد در پاسخ دریافت کند.

هدرمفهومنمونه
Content-Typeنوع محتوای موجود در بدنه همین پیامContent-Type: application/json
Acceptنوع محتوایی که کلاینت برای پاسخ قبول می‌کندAccept: application/json

برای مثال، کلاینت می‌تواند اطلاعات یک فرم را با فرمت JSON ارسال کند و از سرور نیز پاسخ JSON بخواهد:

Content-Type: application/json 
Accept: application/json

در این مثال، Content-Type درباره بدنه درخواست و Accept درباره پاسخ مورد انتظار صحبت می‌کند.

معرفی هدرهای پرکاربرد HTTP

HTTP هدرهای زیادی دارد و هرکدام اطلاعات خاصی را منتقل می‌کنند. علاوه بر هدرهای اصلی این جلسه، آشنایی با چند هدر رایج دیگر نیز مفید است.

نام هدرکاربردمحل استفاده رایج
Content-Typeمشخص‌کردن نوع محتوای بدنه پیامدرخواست و پاسخ
Authorizationارسال اطلاعات تأیید هویتدرخواست
User-Agentمعرفی نرم‌افزار ارسال‌کننده درخواستدرخواست
Acceptمشخص‌کردن فرمت‌های قابل‌قبول برای پاسخدرخواست
Hostمشخص‌کردن نام دامنه مقصددرخواست
Accept-Languageاعلام زبان‌های موردنظر کاربردرخواست
Content-Lengthمشخص‌کردن اندازه محتوا بر حسب بایتدرخواست و پاسخ
Cache-Controlتعیین قوانین ذخیره محتوا در حافظه کشدرخواست و پاسخ
Cookieارسال کوکی‌های ذخیره‌شده برای سروردرخواست
Set-Cookieدرخواست از مرورگر برای ذخیره یک کوکیپاسخ
Locationمشخص‌کردن آدرس مقصد برای تغییر مسیرپاسخ
Serverارائه اطلاعات درباره نرم‌افزار سرورپاسخ

چه اطلاعاتی از طریق هدرها منتقل می‌شوند؟

هدرهای HTTP می‌توانند اطلاعات متنوعی را منتقل کنند. نوع اطلاعات به هدف درخواست، پاسخ و تنظیمات برنامه بستگی دارد.

اطلاعات مربوط به محتوا

هدرهایی مانند Content-Type و Content-Length درباره نوع و اندازه محتوای پیام اطلاعات می‌دهند. کلاینت یا سرور با کمک این اطلاعات می‌تواند بدنه پیام را درست دریافت و پردازش کند.

اطلاعات تأیید هویت

کلاینت می‌تواند اطلاعات موردنیاز برای تأیید هویت را از طریق هدر Authorization ارسال کند. سرور نیز پس از بررسی این اطلاعات، دسترسی کاربر را مشخص می‌کند.

اطلاعات مربوط به کلاینت

هدرهایی مانند User-Agent و Accept-Language اطلاعاتی درباره نرم‌افزار، سیستم یا زبان موردنظر کاربر ارائه می‌کنند.

اطلاعات مربوط به پاسخ

سرور می‌تواند نوع پاسخ، قوانین کش، آدرس تغییر مسیر و کوکی‌های جدید را از طریق هدرهای پاسخ برای کلاینت ارسال کند.

اطلاعات مربوط به کش

هدر Cache-Control مشخص می‌کند که مرورگر یا سرورهای واسط چگونه یک پاسخ را ذخیره و دوباره استفاده کنند. استفاده درست از کش می‌تواند سرعت بارگذاری سایت را افزایش دهد و تعداد درخواست‌های تکراری را کاهش دهد.

اطلاعات مربوط به کوکی‌ها

مرورگر با هدر Cookie اطلاعات کوکی‌های مرتبط را برای سرور می‌فرستد. سرور نیز با هدر Set-Cookie می‌تواند از مرورگر بخواهد یک کوکی جدید را ذخیره یا مقدار یک کوکی را تغییر دهد.

نمونه کامل استفاده از هدرها در یک API

فرض کنید یک برنامه می‌خواهد اطلاعات یک محصول را از API دریافت کند. درخواست می‌تواند به‌شکل زیر باشد:

GET /api/products/25 HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer token-value
User-Agent: MyApplication/1.0

اطلاعات این درخواست را می‌توان به‌صورت زیر بررسی کرد:

  • GET نشان می‌دهد که کلاینت قصد دریافت اطلاعات را دارد.
  • Host نام سرور مقصد را مشخص می‌کند.
  • Accept نشان می‌دهد که کلاینت پاسخ JSON می‌خواهد.
  • Authorization اطلاعات تأیید هویت را منتقل می‌کند.
  • User-Agent برنامه ارسال‌کننده درخواست را معرفی می‌کند.

اگر درخواست موفق باشد، سرور می‌تواند پاسخ زیر را ارسال کند:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 48
Cache-Control: no-cache

{
  "id": 25,
  "name": "Laptop",
  "price": 1200
}

کد 200 موفقیت درخواست را نشان می‌دهد. هدر Content-Type اعلام می‌کند که بدنه پاسخ JSON است و Content-Length اندازه محتوا را مشخص می‌کند.

آیا هدر HTTP از اطلاعات محافظت می‌کند؟

قرارگرفتن اطلاعات در هدر به معنی مخفی یا رمزنگاری‌شدن آن‌ها نیست. هدرهای HTTP نیز مانند سایر بخش‌های درخواست و پاسخ می‌توانند در مسیر انتقال مشاهده شوند. برای محافظت از اطلاعات باید ارتباط سایت یا API از طریق HTTPS برقرار شود. HTTPS درخواست، پاسخ، هدرها و بدنه پیام را هنگام انتقال رمزنگاری می‌کند. همچنین نباید اطلاعات حساس غیرضروری را در هدرها قرار داد. توکن‌ها و اطلاعات ورود نیز باید با روش‌های امن ایجاد، نگهداری و بررسی شوند.

چگونه هدرهای HTTP را مشاهده کنیم؟

با استفاده از ابزارهای توسعه‌دهنده مرورگر می‌توان هدرهای درخواست و پاسخ را مشاهده کرد. در مرورگرهایی مانند Chrome و Firefox ابتدا ابزارهای توسعه‌دهنده را باز کنید و وارد بخش Network شوید. پس از بارگذاری صفحه، فهرستی از درخواست‌ها نمایش داده می‌شود. با انتخاب هر درخواست و ورود به بخش Headers می‌توانید اطلاعات زیر را بررسی کنید:

  • آدرس درخواست
  • متد HTTP
  • کد وضعیت پاسخ
  • Request Headers
  • Response Headers
  • Query String
  • محتوای ارسال‌شده همراه درخواست

این بخش هنگام بررسی API، پیدا‌کردن خطاهای برنامه و تحلیل ارتباط میان مرورگر و سرور کاربرد زیادی دارد.

چرا شناخت هدرهای HTTP مهم است؟

هدرها بخش مهمی از ارتباط HTTP هستند. برنامه‌نویسان هنگام طراحی سایت، ساخت API، پیاده‌سازی ورود کاربران و بررسی خطاها با آن‌ها سروکار دارند. شناخت هدرهای HTTP کمک می‌کند:

  • نوع اطلاعات ارسالی و دریافتی را تشخیص دهید.
  • درخواست‌ها و پاسخ‌های API را بهتر بررسی کنید.
  • مشکلات مربوط به فرمت JSON یا HTML را پیدا کنید.
  • اطلاعات تأیید هویت را به سرور ارسال کنید.
  • رفتار مرورگر و سرور را بهتر درک کنید.
  • مشکلات کش، کوکی و تغییر مسیر را بررسی کنید.
  • درخواست‌ها را در ابزار Network مرورگر تحلیل کنید.

جمع‌بندی

هدر HTTP بخشی از درخواست یا پاسخ است که اطلاعات تکمیلی درباره ارتباط میان کلاینت و سرور را منتقل می‌کند. هر هدر از یک نام و مقدار تشکیل می‌شود و علامت دونقطه این دو بخش را از یکدیگر جدا می‌کند. Request Header از طرف کلاینت برای سرور ارسال می‌شود و اطلاعاتی درباره درخواست، مرورگر، فرمت قابل‌قبول و تأیید هویت ارائه می‌کند. Response Header نیز از طرف سرور برای کلاینت فرستاده می‌شود و اطلاعاتی درباره نوع پاسخ، کش، کوکی و تغییر مسیر در اختیار کلاینت قرار می‌دهد.

Content-Type نوع محتوای موجود در پیام را مشخص می‌کند. Authorization برای ارسال اطلاعات تأیید هویت کاربرد دارد، User-Agent نرم‌افزار ارسال‌کننده درخواست را معرفی می‌کند و Accept فرمت‌های قابل‌قبول برای پاسخ را نشان می‌دهد. در این قسمت با مفهوم HTTP Headers، تفاوت هدرهای درخواست و پاسخ و مهم‌ترین اطلاعات منتقل‌شده از طریق هدرها آشنا شدیم. برای مشاهده تمام جلسات وارد صفحه آموزش پروتکل HTTP شوید. همچنین برای مرور قسمت قبل می‌توانید مقاله متدهای HTTP و کدهای وضعیت چیست؟ را مطالعه کنید.

کلمات کلیدی - تگ‌ها

از کلمات کلیدی و تگ‌های مربوط به هدر HTTP چیست؟ آشنایی با HTTP Headers و کاربرد آن‌ها دیدن فرمایید.

تصویر کلمات کلیدی مرتبط با هدر HTTP چیست؟ آشنایی با HTTP Headers و کاربرد آن‌ها

مشاهده در آپارات یا یوتیوب

محتوای ویدیویی این صفحه در سایت قابل مشاهده است. اما اگر عادت دارید توی پلتفرم آپارات یا یوتیوب ویدیوها را مشاهده کنید، می‌توانید از دکمه‌های زیر استفاده کنید.

تماشای ویدیوی هدر HTTP چیست؟ آشنایی با HTTP Headers و کاربرد آن‌ها در آپارات و یوتیوب

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه هدر HTTP چیست؟ آشنایی با HTTP Headers و کاربرد آن‌ها در شبکه‌های اجتماعی

نظرات شما برای ما ارزشمند است

متاسفانه تاکنون پیامی برای این مطلب ثبت نشده است. شما اولین شخصی باشید که پیام می‌گذارد.

نظرات کاربران

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.