متد QUERY به استاندارد HTTP اضافه شد
خلاصهٔ کاملتر
این سند که با شمارهٔ RFC 10008 و بهعنوان یه استاندارد پیشنهادی IETF منتشر شده، یه متد تازهٔ HTTP به اسم QUERY رو معرفی میکنه. ایدهش سادهست: کلاینت یه کوئری رو تو بدنهٔ درخواست میفرسته و سرور نتیجهٔ پردازشش رو برمیگردونه. این خیلی شبیه POST ـه، با این تفاوت مهم که QUERY بهصراحت «امن» (safe) و idempotent تعریف شده.
نویسندههای استاندارد توضیح میدن که چرا این متد لازم بوده. روش معمول برای کوئری، فرستادن پارامترها تو خود URL با GET ـه؛ ولی وقتی داده زیاد میشه این روش دردسرساز میشه: محدودیت طول URL از قبل معلوم نیست، آدرسها بیشتر از بدنه لاگ و بوکمارک میشن، و هر ترکیب از ورودیها عملاً یه منبع جدا حساب میشه. خیلیها بهجاش از POST استفاده میکنن، ولی اونوقت معلوم نیست درخواست یه کوئری امن ـه یا داره چیزی رو عوض میکنه.
با QUERY، همون کوئری اینشکلی فرستاده میشه و ورودی بهجای URL تو بدنه میاد:
QUERY /feed HTTP/1.1
Host: example.org
Content-Type: application/x-www-form-urlencoded
q=foo&limit=10&sort=-publishedچون این متد امن و idempotent ـه، ابزارها میتونن با خیال راحت جوابش رو کش کنن یا بعد از قطعی اتصال، درخواست رو دوباره بفرستن.
استاندارد میگه سرور باید هدر Content-Type رو الزامی کنه و اگه نبود یا با محتوا نخوند، درخواست رو با خطای 4xx رد کنه. برای حالتهای مختلف هم کدهای مشخص پیشنهاد شده؛ مثلاً 415 برای مدیاتایپ پشتیبانینشده و 422 وقتی کوئری از نظر نحوی درسته ولی قابلاجرا نیست — مثل یه کوئری SQL که به جدول ناموجود اشاره میکنه.
یه هدر پاسخ تازه هم به اسم Accept-Query معرفی شده که سرور باهاش اعلام میکنه از QUERY پشتیبانی میکنه و چه فرمتهای کوئریای رو قبول داره. چون جواب QUERY کششدنی ـه، کلید کش باید خود محتوای درخواست و متادیتاش رو هم حساب کنه؛ به گفتهٔ سند، همین کار کشکردن QUERY رو پیچیدهتر از GET میکنه، چون سرور باید کل بدنه رو بخونه تا کلید کش رو بسازه.
از نظر امنیتی، سند میگه چون اطلاعات حساس بهجای URL تو بدنه میره، احتمال لو رفتنش از راه لاگها کمتره؛ ولی اگه سرور برای نتیجه یه URL موقت بسازه، اون آدرس نباید بخشهای حساس کوئری رو توش داشته باشه. مرورگرها هم برای QUERY به درخواست preflight نیاز دارن، چون این متد جزو متدهای امنِ CORS نیست.
نکات کلیدی:
- QUERY یه متد تازهٔ HTTP ـه که کوئری رو تو بدنهٔ درخواست میفرسته، نه تو URL.
- برخلاف POST، این متد رسماً امن و idempotent ـه، پس کش و تلاش دوبارهٔ خودکار براش مجازه.
- هدر Accept-Query به سرور اجازه میده پشتیبانی از QUERY و فرمتهای مجاز رو اعلام کنه.
- کشکردن جواب QUERY باید خود محتوای درخواست رو تو کلید کش دخیل کنه.
- این متد با شمارهٔ RFC 10008 بهعنوان استاندارد پیشنهادی IETF ثبت شده.




