HTTP چیست ؟
عبارت HTTP مخفف Hyper Text Transfer Protocol بوده و یک پروتکل برای مشخص کردن فرمت اطلاعات و ارسال آنها در شبکه است. علاوه بر آن، HTTP مشخص میکند که وب سرورها و مرورگرها در هنگام مواجه شدن با دستورات مختلف چه واکنشی نشان دهند. با مثال زیر، بهتر متوجه مفهوم HTTP خواهید شد. زمانی که یک آدرس وب را در مرورگر خود وارد میکنید، در واقع یک درخواست HTTP به وب سرور میفرستید تا آن صفحه وب را واکشی کرده و به شما نشان دهد. دو مفهوم Request و Response یا درخواست/پاسخ در HTTP بسیار مهم هستند. به این شکل که کاربر درخواست (Request) خود را از طریق مرورگر به وب سرور میفرستد. در سرور، پردازش موردنظر روی این درخواست انجام شده و خروجی تولید شده دوباره از طریق پاسخ (Response) به مرورگر کاربر میگردد.متدهای مختلف پروتکل HTTP
متدهای مختلف پروتکل HTTP عبارتند از:- GET
- POST
- HEAD
- PUT
- DELETE
- CONNECT
- OPTIONS
- TRACE
- PATH
متد Get چیست؟

- فرم تماس با ما
- فرم ثبت نام یا ورود به سایت
- فرم عضویت در خبرنامه
- و… .
?sitename =saman-navidiراجع به زوج “نام/مقدار” همانطور که از اسم آن میتوانید متوجه شوید، بخش اول نشان دهنده نام مورد نظر ما و دومین بخش نشان دهنده مقدار مورد استفاده برای ذخیره سازی میباشد. زوج “نام/مقدار” به صورت خودکار مقادیر متناظر را از فرم دریافت میکند. یک فرم میتواند شامل textbox ،checkbox یا موارد دیگر باشد، پس نام استفاده شده در متد GET همان نام کنترل استفاده شده در فرم بوده و محتویاتی که کاربر در کنترل مورد نظر وارد میکند، مقدار را مشخص میکند. در مثال بالا بعد از ؟ زوج “نام/مقدار” با عنوان sitename =saman-navidi آمده که sitename نام مورد نظر ما و saman-navidi مقدار مرتبط با آن است. مرورگر زمانی که میخواهد یک صفحه را برای سرویس دهنده ارسال کند، این اطلاعات را به صورت خودکار به انتهای URL اضافه میکند. پس در نهایت آدرس ما به شکل زیر نمایش داده میشود:
https://saman-navidi.ir/page.php?sitename=saman-navidiبه همراه یک URL میتوان بیشتر از یک زوج “مقدار/نام” را ارسال کرد. برای این کار باید هر زوج “مقدار/نام” را با علامت “&” (که به آن ampersand نیز گفته میشود) از یکدیگر جدا کنیم. در کد زیر از دو زوج sitename=saman-navidi و webmaster=saman استفاده کرده و این دو با “&” از هم جدا شده اند:
https://saman-navidi.ir/page.php?sitename=saman-navidi&webmaster=Samanهمانطور که کمی قبلتر اشاره کردیم، بخش اضافه شده به URL را Query String میگويند. مشاهده کردید که به کمک متد GET اطلاعات را به وب سرور خود ارسال کردیم، اما متد GET تنها روش ارسال داده بين سرويس گيرنده و سرويس دهنده نیست. برای ارسال اطلاعات میتوانیم از متد POST هم استفاده کنیم.
مزایا و معایب استفاده از متد GET
مزایا و معایب استفاده از متد GET عبارتند از:- از آنجایی که اطلاعات فرستاده شده با متد GET در URL آدرس صفحه نمایش داده میشوند، میتوانید صفحه را با مقادیر query string مورد نظر خود بوک مارک (Bookmark) کنید.
- متد GET مناسب ارسال اطلاعات حساس و مهمی مثل نام کاربری، رمز عبور، اطلاعات کارت بانکی و… نیست، زیرا اطلاعات به طور کامل در query string آدرس صفحه قابل مشاهده است و اینکه در حافظه مرورگر کاربر به عنوان یک صفحه بازدید شده ذخیره میشود.
- متد GET دیتا را در یک متغیر داخل محیط سرور ذخیره میکند؛ به همین دلیل طول URL محدود شده و در نتیجه کل داده ارسالی ما محدود میشود.
متد POST چیست؟

مزایا و معایب استفاده از متد POST
مزایا و معایب استفاده از متد POST عبارتند از:- امنیت این روش ارسال اطلاعات بسیار بالا است و اطلاعاتی که کاربر تایپ میکند به هیچ عنوان در مرورگر قابل مشاهده نیست، علاوه بر آن، در گزارشات (Logs) سرور هم ذخیره نمیشوند.
- از آنجایی که اطلاعات ارسال شدهی صفحه با متد POST در URL دیده نمیشوند، نمیتوان آن صفحه را در مرورگر Bookmark کرد.
- در متد POST محدودیت بسیار بیشتری برای ارسال اطلاعات وجود دارد. به کمک POST میتوان دادههای متنی و باینری (آپلود فایل) را ارسال کرد.
ارسال مقدار متغیرها از یک صفحه به صفحه ای دیگر با روش POST در PHP
تمامی توسعه دهندگان وب سایت و به خصوص زبان PHP، با متدهای GET و POST سروکار دارند. پس در این بخش برای تفهیم بیشتر این دو متد، یک برنامهی ساده را در خصوص ارسال متغیر در PHP مثال میزنیم.نمونههایی از متد GET و POST در PHP
فرض کنید که میخواهید یک رشته را با اینپوت فیلد گرفته و بعد از زدن دکمهی تایید، آن را در صفحهی جدیدی در قالب یک متن نمایش دهید. کد این برنامهی ارسال متغیر در PHP با استفاده از متد GET به صورت زیر است:<?php if(isset($_GET["name"])){ echo " Welcome," . $_GET["name"] . " "; } ?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
<label for="inputName">Name:</label>
<input type="text" name="name" id="inputName">
<input type="submit" value="Submit">
</form>
</body>
</html>

<?php if(isset($_POST["name"])){ echo " Welcome," . $_POST["name"] . " "; } ?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
<label for="inputName">Name:</label>
<input type="text" name="name" id="inputName">
<label for="password">password:</label>
<input type="password" name="pass">
<input type="submit" value="Submit">
</form>
</body>
</html>

تفاوت متد GET و POST در PHP
به عنوان یک نتیجه گیری، تفاوت GET و POST را در قالب یک جدول گردآوری کردیم:| متد GET | متد POST |
| پارامترهای GET در URL موجود است. | پارامترهای POST در بدنه گنجانده شده است. پس امنیت بالاتری دارد. |
| از متد GET اغلب برای واکشی اسناد استفاده میشود و از پارامترهای GET برای توصیف اینکه به دنبال کدام سند هستید، در چه صفحهای هستید و… استفاده میشود. | از متد POST اغلب برای بروزرسانی دادهها برای تغییر در سرور یا دادههای ذخیره شده در سرور استفاده میشود. |
| از آنجا که پارامترها در URL میآیند، حداکثر طول URL دارای محدودیت است. | هیچ محدودیتی در طول URL ندارد. |
| در اغلب موارد، هنگامی که شما یک درخواست ساده را با استفاده از متد GET ارسال میکنید، تراکنش بین ماشینها و سیستمها کمتر است. | با فراخوانی متد POST، اطلاعات ذخیره شده تغییر میکنند، پس تراکنش بین سیستمی پیچیدهتر میشود. |
| با فراخوانی پی در پی یک متد GET اطلاعات بازگشتی از سمت متد GET نباید تغییر کنند. | دادههای موجود در سرور را تغییر میدهد. |
| این متد تنها از نوع داده رشته (String) پشتیبانی میکند. | متد POST از انواع مختلف داده (بولین، عددی و…) در بدنهی خود پشتیبانی میکند. |
| نتایج به دست آمده از متد GET را میتوان بوکمارک کرد. | نتایج به دست آمده از متد POST را نمیتوان بوکمارک کرد. |
| درخواست GET اغلب قابل ذخیره شدن در حافظهی پنهان (کش شدن) است. | درخواست POST به سختی قابل کش شدن است. |
| پارامترهای متد GET در تاریخچهی مرورگر وب باقی میمانند. | پارامترهای POST در سابقهی مرورگر وب ذخیره نمیشوند. |
دریافت و ارسال اطلاعات با متد GET در جاوا اسکریپت
جاوا اسکریپت دارای ماژولها و روشهای متنوعی برای ایجاد درخواستهای HTTP است. این ماژولها میتوانند برای ارسال یا دریافت اطلاعات از دادههای سمت سرور مورد استفاده قرار گیرند. برخی از ماژولهای کاربردی و محبوب بین توسعه دهندگان جاوا اسکریپت عبارتند از:- فناوری Ajax
- متدهای jQuery (مانند $.ajax)
- استفاده از fetch
- کتابخانهی Axios
- ماژول Angular HTTP Client (برای استفاده در انگولار)
const Http = new XMLHttpRequest();
const url='https://jsonplaceholder.typicode.com/posts';
Http.open("GET", url);
Http.send();
Http.onreadystatechange = (e) => {
console.log(Http.responseText)
}
با استفاده از XMLHTTPRequest.onreadystatechange مقدار بازگشتی یا همان پاسخ متد GET، در کنسول چاپ میشود.
دریافت و ارسال اطلاعات با متد POST در جاوا اسکریپت
برای آشنایی بیشتر، یک نمونه از متد POST در جاوا اسکریپت را با استفاده از توابع jQuery به شکل زیر است:const Url= 'https://isonplaseholder.typicode.con/postsr/' ;
const data={
name:"7learn",
id:1399
}
$('.btn').click(function(){
$.post(Url,data, function(data, status){
console.log('${data} and status is ${status}')
});
})
همانطور که در بالا میبینید، متد post$. روش دیگری برای ارسال اطلاعات به سرور است. این متد سه پارامتر (URL، دادههایی که میخواهید ارسال کنید و عملگر برگشتی) را به عنوان ورودی دریافت میکند و نتیجه را در کنسول چاپ میکند.


بدون دیدگاه