پروتکل انتقال ابرمتن: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
افزودن قسمت جلسه و روش های درخواست.
خط ۲۲:
نسخهٔ ۱٫۱ این پروتکل برخلاف نسخهٔ ۱٫۰ قابلیت استفاده از یک اتصال {{به انگلیسی|Connection}} برای چندین درخواست را دارد. مثلا می‎تواند عکس‎ها، فایل‎های اسکریپت و … موجود در یک صفحه را با همان اتصال اولیه دریافت کند. لذا سرعت آن به دلیل حذف شدن برقراری ارتباط مجدد TCP نسبت به نسخهٔ ۱٫۰ افزایش یافته است.
 
== وضعیت جلسه {{به انگلیسی|Session State}}==
در پروتکل انتقال ابرمتن به دنباله‎ای از درخواست‎ها و پاسخ‏‎ها جلسه {{به انگلیسی|Session}} گفته می‎شود. کلاینت با ایجاد یک اتصال [[قرارداد هدایت انتقال|هدایت انتقال (TCP)]] بر روی یک درگاهِ از پیش تعیین شده بر روی سرور ( معمولا درگاه شماره ۸۰؛ [[فهرست عددهای درگاه تی‌سی‌پی و یودی‌پی]] )، جلسه را آغاز می‎کند. سرور وب همواره بر روی درگاه در انتظار درخواست‎های کلاینت‎ها می‎باشد. بعد از دریافت درخواست ارسال شده، سرور با ارسال یک خط وضعیت {{به انگلیسی|Status Line}} و بدنه، پاسخ کلاینت را به او بازمی‎گرداند. بدنه بستهٔ پاسخ معمولاً حاوی منبع درخواست شده است؛ با این حال از آن برای ارسال خطا و اطلاعات دیگر نیز استفاده می‎شود.<ref name="rfc_2616" />
پروتکل انتقال ابرمتن یک پروتکل Stateless می‎باشد. بدین معنی که در یک سری از درخواست های ارسال شده به سمت سرور، هیچ ردی از کاربر ذخیره نمی‎کند. به طور مثال، ''سرور وب هیچگاه نمی تواند به یاد بیاورد که شما در این وبسایت لاگین کرده‎اید یا نه!'' اما به دلیل نیاز شدید نرم‎افزار های تحت وب به ثبت وضعیت، این مساله به روش‎های زیر پیاده‎سازی شده است:
 
یک نمونه از ''خط وضعیت'' در پاسخ به یک درخواست مجاز:
{{چپ‌چین}}
HTTP/1.1 200 OK
{{پایان چپ‌چین}}
 
=== روش‎های درخواست ===
پروتکل انتقال ابرمتن روش‎هایی را برای درخواست تعریف کرده است {{به انگلیسی|Request Method}}که هر کدام از آن‎ها باعث انجام عمل خاص در سمت سرور می‎شوند. نسخهٔ ۱٫۰ روش‎های درخواست GET، POST و HEAD را دارا بود.<ref name="rfc_1945">{{یادکرد وب |نویسنده = |نشانی= http://tools.ietf.org/html/rfc1945|عنوان= RFC 1945 - HTTP/1.0| ناشر = [[نیروی ضربت مهندسی اینترنت]]}}</ref><sup>[بخش ۸]</sup>
در نسخهٔ ۱٫۱ پنج روش جدید افزوده شد<ref name="rfc_2616" /><sup>[بخش ۹]</sup>: OPTIONS، PUT، DELETE، TRACE و CONNECT. از آنجایی که عملکرد این روش‎ها به طور کامل تعریف و شرح داده شده است، لذا تمامی [[مرورگر|مرورگر ها]] و سرور ها به راحتی می‎توانند این روش‎ها را پیاده‎سازی و استفاده نمایند. اگر روشی از برای سرور تعریف نشده باشد، با آن به عنوان یک روش غیرِامن برخورد خواهد کرد. در تعداد روش‎ها هیچ محدودیتی وجود ندارد. این نکته باعث می‎شود که گسترش احتمالی این پروتکل در آینده به زیرساخت‎ها فعلی آن آسیبی نرساند و آن‎ها را تغییر ندهد. برای مثال در حال حاضر [[پروتکل WebDAV]] هفت روش جدید درخواست را تعریف کرده است. <ref name="rfc_5789">{{یادکرد وب |نویسنده = |نشانی= http://tools.ietf.org/html/rfc5789|عنوان= RFC 5789 | ناشر = [[نیروی ضربت مهندسی اینترنت]]| تاریخ= مارچ ۲۰۱۰}}</ref>
 
; '''GET''': درخواست نمایش منبعِ درخواست‎داده‎شده را می‎دهد. (این منبع معمولا یک [[پرونده (رایانه)|فایل یا پرونده]] می‎باشد.) این روش فقط اطلاعات را از سرور دریافت می‎کند و نباید هیچ تاثیری بر روی منابع سرور بگذارد.
; '''HEAD''': این روش دقیقا مانند روش GET عمل می‎کند ''با این تفاوت که بدنه پاسخ را نمی‎خواهد''. از این روش برای به‎دست‎آوردن [[فراداده|فراداده‎های]] موجود در سرآیند {{به انگلیسی|Header}} استفاده می‎شود. یکی از استفاده‎های رایج این نوع درخواست، بررسی تغییر یافتن یک منبع است.
; '''POST''': در این روش به همراه بستهٔ درخواست اطلاعاتی نیز فرستاده می‎شود. سرور با توجه به [[نشانی وب|نشانی وب (URL)]] درخواست شده و اطلاعات ارسال شده، منبع مورد نظر را در بستهٔ پاسخ برمی‎گرداند. این اطلاعات ارسالی می‎تواند نامِ‎کاربری و کلمهٔ‎عبور، یک نظر بر روی یک مطلب و یا اطلاعات هر فرم دیگری که توسط کاربر وارد شده است، باشد.<ref name="rfc_2616"/><sup>[بخش ۹٫۵]</sup>
; '''PUT''': در این روش منبعی به همراه بستهٔ درخواست ارسال شده و از سرور تقاضا می‎شود که این منبع را در [[یوآرآی|آدرس]] موجود در بسته [[بارگذاری]] کند. اگر در محلِ درخواست شده قبلا منبع دیگری قرار داشته باشد، منبع جدید جایگزین خواهد شد.
; '''DELETE''': از سرور درخواست می‎کند که [[یوآرآی|آدرس]] فرستاده شده را حذف نماید.
; '''TRACE''': در این روش سرور اطلاعات ارسال شده را ''عیناً'' به کلاینت باز می‎گرداند. (برای بررسی تغییراتی که واسط‎های شبکه بر روی بسته می‎گذارند، از این روش استفاده می‎شود.)
; '''OPTIONS''': از سرور تقاضا می‎کند تا روش‎های درخواستِ {{به انگلیسی|Request Method}} موجود برای [[نشانی وب|نشانی]] فرستاده شده را اعلام نماید. برای گرفتن تمامی روش‎های درخواست قابل اجرا بر روی سرور می‎توان از نشانی '*' استفاده کرد.
; '''CONNECT''': بستهٔ پروتکل ابرمتن را به یک تونل TCP/IP تبدیل می‎کند. این عمل معمولاً برای برقراری ارتباط امن ([[پروتکل امن انتقال ابرمتن|HTTPS]]) بر روی یک [[پراکسی سرور]] ناامن استفاده می‎شود.<ref>{{یادکرد وب |نویسنده = |نشانی= http://tools.ietf.org/html/rfc2817|عنوان= RFC 2817 - Upgrading to TLS Within HTTP/1.1"| ناشر = [[نیروی ضربت مهندسی اینترنت]]|تاریخ= سال ۲۰۰۰}}</ref>
; '''PATCH''': این روش که در سال ۲۰۱۰ به پروتکل افزوده شد، برای ایجاد تغییرات جزیی بر روی منابع استفاده می‎شود.<ref name="rfc_5789" />
 
سرورهای وب موظف هستند حداقل روش‎های GET و HEAD را پیاده‎سازی نمایند.<ref name="rfc_2616" /><sup>[بخش ۵٫۱٫۱]</sup>
 
=== وضعیت جلسه ===
پروتکل انتقال ابرمتن یک پروتکل Stateless می‎باشد. بدین معنی که سرور در یک سری از درخواست های ارسال شده به سمت سرور،جلسه هیچ ردی از کاربر ذخیره نمی‎کند. به طور مثال، ''سرور وب هیچگاه نمی تواند به یاد بیاورد که شما در این وبسایت لاگین کرده‎اید یا نه!'' اما به دلیل نیاز شدید نرم‎افزار های تحت وب به ثبت وضعیت، اینبا مسالهاستفاده بهاز روش‎هایتکنیک‎ها زیر پیاده‎سازیاین عمل شدهانجام استمی‎گیرد:
* [[کوکی اچ‌تی‌تی‌پی|کوکی]]
* استفاده از متغیر های پنهان در فرم‎های وب