هر پروتكل از يك ساختار خاص برای ارسال و دريافت اطلاعات (بسته های اطلاعاتی ) استفاده نموده و ترافيك مختص به خود را در شبكه ايجاد می نمايد . HTTP برگرفته از (Hyper Text Transfer Protocol ) ، يكی از متداولترين پروتكل های لايه application است كه مسئوليت ارتباط بين سرويس گيرندگان و سرويس دهندگان وب را برعهده دارد .
روشهای درخواست
پروتکل انتقال ابرمتن روشهایی را برای درخواست تعریف کرده است (به انگلیسی: Request Method)که هر کدام از آنها باعث انجام عمل خاص در سمت سرور میشوند. نسخهٔ ۱٫۰ روشهای درخواست GET، POST و HEAD را دارا بود. در نسخهٔ ۱٫۱ پنج روش جدید افزوده شد: OPTIONS، PUT، DELETE، TRACE و CONNECT. از آنجایی که عملکرد این روشها به طور کامل تعریف و شرح داده شده است، لذا تمامی مرورگر ها و سرور ها به راحتی میتوانند این روشها را پیادهسازی و استفاده نمایند. اگر روشی برای سرور تعریف نشده باشد، با آن به عنوان یک روش غیرِامن برخورد خواهد کرد. در تعداد روشها هیچ محدودیتی وجود ندارد. این نکته باعث میشود که گسترش احتمالی این پروتکل در آینده به زیرساختها فعلی آن آسیبی نرساند و آنها را تغییر ندهد. برای مثال در حال حاضر پروتکل WebDAV هفت روش جدید درخواست را تعریف کرده است.
GET
درخواست نمایش منبعِ درخواستدادهشده را میدهد. (این منبع معمولاً یک فایل یا پرونده میباشد.) این روش فقط اطلاعات را از سرور دریافت میکند و نباید هیچ تاثیری بر روی منابع سرور بگذارد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php ?> <form action = "test2.php" method = "get"> <input type="text" name="username" /> <input type="password" name="password" /> <button name="login" value="1" type="submit">Login</button> </form> <?php if(isset($_Get['login'])){ echo $_Get['username']; echo $_Get['password']; } ?> |
HEAD
این روش دقیقاً مانند روش GET عمل میکند با این تفاوت که بدنه پاسخ را نمیخواهد. از این روش برای بهدستآوردن فرادادههای موجود در سرآیند به انگلیسی: Header) استفاده میشود. یکی از استفادههای رایج این نوع درخواست، بررسی تغییر یافتن یک منبع است.
POST
در این روش به همراه بستهٔ درخواست اطلاعاتی نیز فرستاده میشود. سرور با توجه به نشانی وب (URL) درخواست شده و اطلاعات ارسال شده، منبع مورد نظر را در بستهٔ پاسخ برمیگرداند. این اطلاعات ارسالی میتواند نامِکاربری و کلمهٔعبور، یک نظر بر روی یک مطلب یا اطلاعات هر فرم دیگری که توسط کاربر وارد شده است، باشد.
PUT
در این روش منبعی به همراه بستهٔ درخواست ارسال شده و از سرور تقاضا میشود که این منبع را در آدرس موجود در بسته بارگذاری کند. اگر در محلِ درخواست شده قبلاً منبع دیگری قرار داشته باشد، منبع جدید جایگزین خواهد شد.
DELETE
از سرور درخواست میکند که آدرس فرستاده شده را حذف نماید.
TRACE
در این روش سرور اطلاعات ارسال شده را عیناً به کلاینت باز میگرداند. (برای بررسی تغییراتی که واسطهای شبکه بر روی بسته میگذارند، از این روش استفاده میشود.)
OPTIONS
از سرور تقاضا میکند تا روشهای درخواستِ (به انگلیسی: Request Method) موجود برای نشانی فرستاده شده را اعلام نماید. برای گرفتن تمامی روشهای درخواست قابل اجرا بر روی سرور میتوان از نشانی ‘*’ استفاده کرد.
CONNECT
بستهٔ پروتکل ابرمتن را به یک تونل TCP/IP تبدیل میکند. این عمل معمولاً برای برقراری ارتباط امن (HTTPS) بر روی یک پراکسی سرور ناامن استفاده میشود.
PATCH
این روش که در سال ۲۰۱۰ به پروتکل افزوده شد، برای ایجاد تغییرات جزیی بر روی منابع استفاده میشود. سرورهای وب موظف هستند حداقل روشهای GET و HEAD را پیادهسازی نمایند.
وضعیت جلسه
پروتکل انتقال ابرمتن یک پروتکل Stateless میباشد. بدین معنی که سرور در یک جلسه هیچ ردی از کاربر ذخیره نمیکند. به طور مثال، سرور وب هیچگاه نمیتواند به یاد بیاورد که شما در این وبسایت لاگین کردهاید یا نه! اما به دلیل نیاز شدید نرمافزار های تحت وب به ثبت وضعیت، با استفاده از تکنیکها زیر این عمل انجام میگیرد:
کوکی
استفاده از متغیر های پنهان در فرمهای وب استفاده از متغیر های موجود در رشتهٔ درخواست. مانند: index.php?session_id=some_unique_id
از نسخهٔ ۱٫۰ پروتکل انتقال ابرمتن به بعد، خطِ اولِ پاسخِ سرور تحت عنوان خط وضعیت شناخته شده است. این خط حاوی یک کد عددی (مانند ۴۰۴) که به عنوان کد وضعیت شناخته میشود و یک پیام متنی (مانند “یافت نشد” یا “Not Found”) که با عنوان علت وضعیت شناخته میشود، میباشد. نحوهٔ برخورد عامل کاربر با پاسخ، بستگی کامل به کد وضعیت و فیلدهای سرآیند بستهٔ پاسخ دارد. با این حال استفاده از کدهای سفارشی (که در پروتکل اصلی موجود نیستند) نیز بلامانع میباشد. زیرا عوامل کاربر در برخورد با کدهای تعریف نشده، از رقم اول عدد آنها برای شناسایی نوع کلی کد استفاده میکنند.
کدهای وضعیت پروتکل انتقال ابرمتن به ۵ دستهٔ کلی تقسیم میشوند:
- کدهای 1xx یا اطلاعاتی: این کدها با عدد ۱ آغاز میشوند. این گروه، این پیام کلی را مشخص میکنند: «درخواست شما دریافت شد، ادامه دهید».
- کدهای 2xx یا موفقیت: این کدها با عدد ۲ آغاز میشوند. یعنی «درخواستِ ارسالی دریافت شده، درک شده، پذیرفته شده و با موفقیت انجام شده است».
- کدهای 3xx یا تغییر مسیر: این کدها با عدد ۳ آغاز میشوند. یعنی «کلاینت برای کامل شدن درخواست نیازمند انجام عملیات اضافی است».
- کدهای 4xx یا خطای کلاینت: این کدها با عدد ۴ آغاز میشوند. این گروه از کدها مشخص میکنند که «کلاینت در درخواست خود اشتباه کرده یا باعث بروز خطا شده است».
- کدهای 5xx یا خطای سرور: این کدها با عدد ۵ آغاز میشوند. با این مفهوم که «سرور در انجام عملیات مربوط به یک بستهٔ درخواستِ ظاهراً صحیح، ناموفق بوده و با خطا مواجه شده است».
علت وضعیت هایی که در متن تعریف پروتکل آمدهاند پیشنهادی بوده و میتوانند با متون دیگر، به صلاحِ دید توسعه دهنده، تغییر پیدا کنند. این عبارت میتواند توسط عامل کاربر به عنوان توضیحات اضافی به کاربر نمایش داده شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // collect value of input field $name = $_POST['fname']; if (empty($name)) { echo "Name is empty"; } else { echo $name; } } ?> </body> </html> |