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

محتوای حذف‌شده محتوای افزوده‌شده
Rezabot (بحث | مشارکت‌ها)
خط ۸:
[[تیم برنرز لی]]، طراح و پیشنهاد دهنده [[وب جهانی]] که اکنون تحت عنوان WWW شناخته می‌شود، برای اولین بار پروتکل انتقال ابرمتن را به همراه ساختار اولیهٔ [[اچ‌تی‌ام‌ال|زبان نشانه‌گذاری ابرمتن (HTML)]] در یک [[وب سرور]] ساده و یک [[مرورگر]] مبتنی بر متن ارائه داد. در این نسخهٔ اولیه تنها روش درخواست (Request Method) موجود GET و تمامی پاسخ‌ها به زبان HTML بودند.<ref name="first_http">{{یادکرد وب |نویسنده = |نشانی= http://www.w3.org/Protocols/HTTP/AsImplemented.html |عنوان= نسخهٔ اولیهٔ HTTP| ناشر = [[کنسرسیوم وب جهان‌شمول|کنسرسیوم وب]]|تاریخ = |تاریخ بازبینی=}}</ref>
 
اولین نسخهٔ مستند پروتکل انتقال ابرمتن نسخهٔ ۰٫۹ آن بود که در سال ۱۹۹۱ منتشر شد.<ref name="first_http" /> [[دیو راگت]]، که در سال ۱۹۹۵ [[گروه کاری پروتکل انتقال ابرمتن]] (HTTP Working Group) را رهبری می‌کرد، خواستار گسترش این پروتکل شد و نهایتاً نسخه ۱٫۰ تحت عنوان «HTTP/1.0» در سال ۱۹۹۶ به صورت رسمی معرفی شد.<ref>{{یادکرد وب |نویسنده = |نشانی= http://www.w3.org/People/Raggett/profile.html|عنوان= زندگینامهٔ دیو راگر | ناشر = |تاریخ = |تاریخ بازبینی=}}</ref><ref>{{یادکرد وب |نویسنده = |نشانی= http://www.w3.org/Arena/webworld/httpwgplans.html|عنوان= برنامه‌ریزی گروه کاری HTTP در سال ۱۹۹۵ | ناشر = |تاریخ = |تاریخ بازبینی=}}</ref>
 
گروه کاری این پروتکل در ژانویه سال ۱۹۹۷ اولین استاندارد نسخهٔ ۱٫۱ را که در همان زمان توسط بسیاری از [[مرورگر]]ها پشتیبانی می‌شد،<ref>{{یادکرد وب |نویسنده = |نشانی= http://www.w3.org/Protocols/HTTP-NG/http-ng-status.html |عنوان= توضیحات پیشرفت پروتکل انتقال ابرمتن نسل جدید | ناشر = [[کنسرسیوم وب جهان‌شمول|کنسرسیوم وب]] |تاریخ = |تاریخ بازبینی=}}</ref> به صورت رسمی منتشر کرد.<ref>{{یادکرد وب |نویسنده = گروه کاری پروتکل انتقال ابرمتن |نشانی= http://tools.ietf.org/html/rfc2068|عنوان= RFC 2068 | ناشر = [[نیروی ضربت مهندسی اینترنت]]|تاریخ = ژانویه ۱۹۹۷|تاریخ بازبینی=}}</ref> آخرین به‌روزرسانی نسخهٔ ۱٫۱ در جون سال ۱۹۹۹ در درخواست شماره ۲۶۱۶ (RFC 2616) انجام شد.<ref name="rfc_2616" />
 
== ساختار کلی ==
خط ۲۴:
 
== جلسه ==
در پروتکل انتقال ابرمتن به دنباله‌ای از درخواست‌ها و پاسخ‌ها جلسه {{به انگلیسی|Session}} گفته می‌شود. کلاینت با ایجاد یک اتصال [[قرارداد هدایت انتقال|هدایت انتقال (TCP)]] بر روی یک درگاهِ از پیش تعیین شده بر روی سرور (معمولاً درگاه شماره ۸۰؛ [[فهرست عددهای درگاه تی‌سی‌پی و یودی‌پی]])، جلسه را آغاز می‌کند. سرور وب همواره بر روی درگاه در انتظار درخواست‌های کلاینت‌ها می‌باشد. بعد از دریافت درخواست ارسال شده، سرور با ارسال یک خط وضعیت {{به انگلیسی|Status Line}} و بدنه، پاسخ کلاینت را به او بازمی‌گرداند. بدنه بستهٔ پاسخ معمولاً حاوی منبع درخواست شده‌است؛ با این حال از آن برای ارسال خطا و اطلاعات دیگر نیز استفاده می‌شود.<ref name="rfc_2616" />
 
یک نمونه از ''خط وضعیت'' در پاسخ به یک درخواست مجاز:
خط ۳۳:
=== روش‌های درخواست ===
پروتکل انتقال ابرمتن روش‌هایی را برای درخواست تعریف کرده‌است {{به انگلیسی|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''': از سرور درخواست می‌کند که [[یوآرآی|آدرس]] فرستاده شده را حذف نماید.
خط ۴۳:
; '''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>
 
=== وضعیت جلسه ===
خط ۵۴:
 
== کدهای وضعیت ==
از نسخهٔ ۱٫۰ پروتکل انتقال ابرمتن به بعد، خطِ اولِ پاسخِ سرور تحت عنوان ''خط وضعیت'' شناخته شده‌است. این خط حاوی یک کد عددی (مانند ۴۰۴) که به عنوان ''کد وضعیت'' شناخته می‌شود و یک پیام متنی (مانند "یافت نشد" یا "Not Found") که با عنوان ''علت وضعیت'' شناخته می‌شود، می‌باشد. نحوهٔ برخورد [[عامل کاربر]] با پاسخ، بستگی کامل به کد وضعیت و فیلدهای سرآیند بستهٔ پاسخ دارد. با این حال استفاده از کدهای سفارشی (که در پروتکل اصلی موجود نیستند) نیز بلامانع می‌باشد. زیرا عوامل کاربر در برخورد با کدهای تعریف نشده، از رقم اول عدد آن‌ها برای شناسایی نوع کلی کد استفاده می‌کنند.<ref name="rfc_2616" /><sup>[بخش ۶٫۱]</sup>
 
کدهای وضعیت پروتکل انتقال ابرمتن به ۵ دستهٔ کلی تقسیم می‌شوند:
خط ۶۳:
* کدهای 5xx یا خطای سرور: این کدها با عدد ۵ آغاز می‌شوند. با این مفهوم که «''سرور در انجام عملیات مربوط به یک بستهٔ درخواستِ ظاهراً صحیح، ناموفق بوده و با خطا مواجه شده‌است''».
 
''علت وضعیت''‌هاییهایی که در متن تعریف پروتکل آمده‌اند پیشنهادی بوده و می‌توانند با متون دیگر، به صلاحِ دید [[توسعه دهنده]]، تغییر پیدا کنند. این عبارت می‌تواند توسط [[عامل کاربر]] به عنوان توضیحات اضافی به کاربر نمایش داده شود.
 
== مثال ==
خط ۱۱۶:
{{درگاه|اینترنت}}
{{وب معنایی}}
 
[[رده:پروتکل انتقال ابرمتن]]
[[رده:استانداردهای وب]]
سطر ۱۲۲ ⟵ ۱۲۳:
[[رده:پشته قرارداد TCP/IP]]
[[رده:مرورگرهای وب]]
[[رده:معرفی‌شده‌های مرتبط با رایانه در ۱۹۹۱ (میلادی)]]
[[رده:وب جهان‌گستر]]