روش‌های درخواست HTML

HTTP چیست؟

پروتکل انتقال هیدروتایپ (Hypertext Transfer Protocol، مخفف HTTP) برای ایجاد ارتباط بین کاربر و سرور طراحی شده است.

HTTP به عنوان پروتکل درخواست-پاسخ بین کاربر و سرور عمل می‌کند.

مثال: کاربر (مرورگر) درخواست HTTP را به سرور ارسال می‌کند؛ سپس سرور پاسخ را به کاربر بازمی‌گرداند. پاسخ شامل اطلاعات مربوط به وضعیت درخواست است و ممکن است شامل محتوای درخواست شده نیز باشد.

روش‌های HTTP

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH
  • OPTIONS

دو روش معمول‌ترین آنها GET و POST هستند.

روش GET

GET برای درخواست داده‌ها از منبع مشخص استفاده می‌شود.

GET یکی از رایج‌ترین روش‌های HTTP است.

لطفاً توجه داشته باشید که رشته جستجو (نام/مقدار) در URL درخواست GET ارسال می‌شود:

/test/demo_form.php?name1=value1&name2=value2

نکات دیگری در مورد درخواست‌های GET:

  • درخواست GET می‌تواند ذخیره شود
  • درخواست GET در تاریخچه مرورگر باقی می‌ماند
  • درخواست GET می‌تواند به عنوان نشانه‌گذار ذخیره شود
  • درخواست GET نباید در هنگام پردازش داده‌های حساس استفاده شود
  • درخواست GET محدودیت طول دارد
  • درخواست GET فقط باید برای بازیابی داده‌ها (بدون تغییر) استفاده شود.

روش POST

POST برای ارسال داده به سرور برای ایجاد/به‌روزرسانی منابع استفاده می‌شود.

داده‌هایی که از طریق POST به سرور ارسال می‌شوند در بدنه درخواست HTTP ذخیره می‌شوند:

POST /test/demo_form.php HTTP/1.1
Host: codew3c.com
name1=value1&name2=value2

POST یکی از رایج‌ترین روش‌های HTTP است.

نکات دیگری در مورد درخواست‌های POST:

  • درخواست POST نمی‌تواند ذخیره شود
  • درخواست POST در تاریخچه مرورگر باقی نمی‌ماند
  • درخواست POST نمی‌تواند به عنوان نشانه‌گذار ذخیره شود
  • درخواست POST طول داده را درخواست نمی‌کند

روش PUT

PUT برای ارسال داده به سرور برای ایجاد/به‌روزرسانی منابع استفاده می‌شود.

تفاوت بین POST و PUT این است که درخواست PUT幂等的 (idempotent) است. به عبارت دیگر، چندین بار فراخوانی درخواست PUT مشابه همیشه نتایج یکسانی را به همراه دارد. در مقابل، چندین بار فراخوانی درخواست POST باعث ایجاد اثرات جانبی چندین بار ایجاد منبع مشابه می‌شود.

روش HEAD

HEAD تقریباً مشابه GET است، اما بدون بدنه پاسخ.

به عبارت دیگر، اگر GET /users لیست کاربران را برمی‌گرداند، پس HEAD /users درخواست مشابهی را ارسال خواهد کرد، اما لیست کاربران را برمی‌گرداند.

درخواست HEAD برای بررسی محتوای درخواست GET قبل از ارسال آن بسیار مفید است (مثلاً قبل از بارگذاری فایل‌های بزرگ یا متن پاسخ).

روش DELETE

روش DELETE منبع مشخص شده را حذف می‌کند.

روش OPTIONS

روش OPTIONS توضیح می‌دهد که گزینه‌های ارتباطی منبع هدف چیست.

مقایسه GET با POST

جدول زیر دو روش HTTP: GET و POST را مقایسه می‌کند.

  GET POST
دکمه بازگشت/تازه‌سازی بی‌خطر داده‌ها دوباره ارسال خواهند شد (مرورگر باید به کاربر اطلاع دهد که داده‌ها دوباره ارسال خواهند شد).
نشانه‌گذار می‌توان به عنوان نشانه‌گذار ذخیره کرد نمی‌توان به عنوان نشانه‌گذار ذخیره کرد
ذخیره قابل ذخیره نمی‌توان آن را ذخیره کرد
نوع کدگذاری application/x-www-form-urlencoded application/x-www-form-urlencoded یا multipart/form-data. برای داده‌های دودویی از多重‌کدگذاری استفاده کنید.
تاریخچه پارامترها در تاریخچه مرورگر ذخیره می‌شوند. پارامترها در تاریخچه مرورگر ذخیره نمی‌شوند.
محدودیت‌های طول داده بله. هنگام ارسال داده، روش GET داده‌ها را به URL اضافه می‌کند؛ طول URL محدود است (طول بیشترین URL 2048 کاراکتر است). بدون محدودیت.
محدودیت‌های نوع داده فقط کاراکترهای ASCII مجاز هستند. بدون محدودیت. همچنین داده‌های دودویی را نیز مجاز می‌کند.
امنیت

در مقایسه با POST، امنیت GET کمتر است، زیرا داده‌های ارسالی بخشی از URL هستند.

هیچ‌گاه از GET برای ارسال رمز عبور یا اطلاعات حساس دیگر استفاده نکنید!

POST از GET امن‌تر است، زیرا پارامترها در تاریخچه مرورگر یا لاگ سرور وب ذخیره نمی‌شوند.
可视性 داده‌ها در URL برای همه قابل مشاهده هستند. داده‌ها در URL نمایش داده نمی‌شوند.