تعداد بازدید: 9668

Http Headers (قسمت دوم)

http headers حاوی اطلاعاتی در رابطه با نوع درخواست ما می باشند. همچنین یک نوع رابط میان درخواست کلاینت و پاسخ سرور در وب سرویس ها می باشد.

Http Headers به سه دسته تقسیم می شوند :

  • Http Request Headers
  • Http General Headers
  • Http Response Header

Http Request Headers

به header هایی که در زمان Request یا درخواست به سمت سرور ارسال می شوند می گوییم. مثلا زمانی که شما به عنوان یک درخواست دهنده از طریق یک Http Client Device مثل Android Device application , IOS Device application , PostMan , Command Line , Browser , … درخواست می فرستید می توانید Request Header ست کنید تا از طریق اون پیامی رو به سرور بفرستید تا بفهمه که چطور باید با درخواست شما رفتار کنه.

برخی هدر های مورد استفاده در اجرای درخواست عبارتند از :

Accept : به معنی انواع mime-type هایی که کلاینت (مثلا مرورگر یا اپلیکیشن) پشتیبانی می کند.

Accept: text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8

Host : مشخصی کننده نام هاستی که به آن درخواست ارسال می شود . مثلا به ازای بازدید یکی از مقالات ما gnutec.net .

Host: gnutec.net

Accept-Language : زبان مورد نظر . در برخی وب سایت های چند زبانه نظیر گوگل به ازای این هدر زبان های مورد نظر باز می گردد.

Accept-Language: en-GB,en;q=0.5

User-Agent : اطلاعات دستگاه درخواست دهنده . مثلا دستگاهی با سیستم عامل مک و مرورگر فایرفاکس .

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:64.0) Gecko/20100101 Firefox/64.0

Referer : از کجا به اینجا آمده اید. مثلا من از صفحه اصلی وب سایت گنوتک به یکی از مقالات رفته ام. این معادل همان دکمه Back در مرورگر می باشد.

Referer: https://gnutec.net/

Cookie : لیست کوکی هایی که در مرورگر موجود است و باید به سمت سرور ارسال شود تا به وسیله متغیر $_COOKIE از آن ها استفاده کند.

Cookie: JSESSIONID=AC682DB2C4B74E68616…121563; _gat=1; _gat_inPage=1

Authentication : این یک header برای authentication می باشد که username , password را به صورت encode شده به سمت سرور ارسال می کند که در سمت سرور سیستم نیز بتواند بوسیله آن درخواست را اعتبار سنجی کند.

Authorization: Basic YWRtaW46YWRtaW4=

مثلا در عبارت بالا از الگوریتم امنیتی Basic (base64-encoded) استفاده کرده و ترکیب username , password در اون برابر با مقداری که می بینید شده و این Header در سرور برای اعتبار سنجی استفاده می شود.

نکته : اعتبار سنجی از این روش از امنیت پایینی برخوردار است.

Http General Headers

header هایی که هم در قسمت Request و هم در قسمت Response وجود دارند. برخی از آن ها شامل :

Cache-Control : آیا این محتوا قابل cache می باشد یا خیر مثلا این محتوا private است یا public که بتوان آن را cache کرد. اگر این محتوا public باشد قابل cache است یا خیر و اگر است به مدت زمان یا life time .

Cache-Control: max-age=0

Connection : وضعیت connection که می تواند یکی از موارد close یا keep-alive باشد. گفتیم که پس از اولین درخواست به ازای تمامی resource های صفحه درخواست ارسال می شود که برای افزایش سرعت connection برابر با keep-alive قرار می گیرد.

Connection: keep-alive

Date : زمان ارسال درخواست یا دریافت پاسخ.

Date: Sun, 16 Dec 2018 12:31:52 GMT

Content-Type : نوع Entity Body که در Response ارسال می گردد. این هدر زمانی که

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

این header در زمان ارسال پاسخ به کلاینت می فهماند که با data های پاسخ را با چه فرمتی ارسال می کنیم.

همچنین در زمان ارسال درخواست به سرور کلاینت بوسیله این header به سرور می گوید که داده های ورودی درخواست با چه فرمتی برای سرور ارسال می گردد.

یکی از راه های ارسال درخواست فرم های HTML می باشند . ویژگی با نام enctype در فرم مفهوم نوع داده ایست که برای سرور می فرستیم که در همین Header قرار می گیرد. که داده های آن می تواند یکی از موارد زیر باشد:

  • application/x-www-form-urlencoded : به صورت پیش فرض . در این نوع space تبدیل به + می شود و کاراکتر های خاص به مقدار ASCI معادلشان encode می شوند.
  • multipart/form-data : داده هایی همراه با مقدار فایل.
  • text/plain :‌ نوع ساده . که همان مورد اول است با این تفاوت که کاراکتر های خاص encode نمی شوند.

همچنین اگر از کلاینت های دیگری استفاده می کنید که لازم است داده های ورودی را در قالب JSON بفرستید می توانید مقدار application/json را به آن بدهید.

Http Response Headers

هدر هایی که توسط سرور زمان ارسال پاسخ به کلاینت ارسال می شود . این هدر ها چون توسط سرور ساخته شده در مرورگر قابل تغییر نمی باشند.

Server : اطلاعاتی را در رابطه با سرور ارسال می کند. مثلا سرور gnutec از نوع Apache می باشد.

Server: Apache

Set-Cookie : کوکی هایی که به دستور سرور باید در مرورگر کاربر ذخیره گردد.

Location : آدرس url که کاربر باید به آن ارسال شود. به طور کل از این هدر برای ارسال کاربر به مکان مختلف پس از انجام پردازش استفاده می کنیم.

Content-length : طول Entity Body مربوط به Response .

WWW-Authenticate : این هدر نوع الگوریتم authentication  رو تعیین می کنه که می تونه یکی از مقادیر زیر باشه:

  • Basic (see RFC 7617, base64-encoded credentials)
  • Bearer (see RFC 6750, bearer tokens to access OAuth 2.0-protected resources),
  • Digest (see RFC 7616, only md5 hashing is supported in Firefox, see bug 472823 for SHA encryption support),
  • HOBA (see RFC 7486 (draft), HTTP Origin-Bound Authentication, digital-signature-based),
  • Mutual (see draft-ietf-httpauth-mutual),
  • AWS4-HMAC-SHA256 (see AWS docs).
WWW-Authenticate: Basic realm=\"Authentication Required\"

مثلا در مثال بالا ما گفتیم که از نوع Basic باشه و پیام `Authentication Required` رو به کاربر بده . بعد از بارگزاری صفحه username , password که کاربر ارسال می کنه که از طریق متغیر $_SERVER['PHP_AUTH_USER'] و $_SERVER['PHP_AUTH_PW'] قابل دستیابی است.

به وسیله این هدر شما می توانید یک سیستم authentication ساده پیاده سازی کنید. دقت داشته باشید که به ازای هر بار لود مرورگر این authentication کار می کند.

مطالب مشابه

php error handling exceptions

مدیریت خطا و استثنا در php

یک سری قوانین در هر زبانی وجود دارد که عدم رعایت آن برابر با خطا می باشد. این خطا ها سطوح مختلفی دارند. خطاها یا توسط...

هدر های Http در درخواست و پاسخ

Http Headers (قسمت سوم)

Http Request و Http Response درخواست و پاسخ بر اساس پروتکل Http می باشند و می توان از این ها برای ارتباط میان نرم افزار...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

2 دیدگاه برای Http Headers (قسمت دوم)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *