معرفی HTTP و مفهوم Upgrade
HTTP یا پروتکل انتقال متنهای فراگیر، یکی از پروتکلهای اصلی وب است که برای انتقال اطلاعات بین کلاینت و سرور استفاده میشود. زمانی که صحبت از HTTP میکنیم، به این معنی است که ما در حال دسترسی به وبسایتها، دانلود فایلها یا ارسال داده به سرور هستیم. حالا در RFC 9110، در بخش 7.8 به مفهوم Upgrade اشاره شده است، که یک ویژگی خاص در HTTP است.
مفهوم Upgrade در واقع این امکان را به کلاینتها میدهد که از سرور بخواهند پروتکل یا فرمت ارتباطی به یک نسخه یا نوع جدیدتر تغییر کند. این به ویژه در مواقعی که درخواست جدیدی نیاز به ویژگیهای بیشتری دارد یا کارایی بهتری میطلبد، مفید است. به عنوان مثال، وقتی که یک مرورگر میخواهد از HTTP/1.1 به WebSocket بروید، از این قابلیت استفاده میکند.
با استفاده از هدر Upgrade، کلاینت میتواند به سرور بگوید که آیا تمایل دارد پروتکل تغییر کند یا نه. اگر سرور این درخواست را پشتیبانی کند، میتواند رابطه را به پروتکل جدید منتقل کند. این کار به معنی این است که پس از تغییر پروتکل، ارتباط جدید میتواند عملیاتی متفاوت و بهتر داشته باشد.
به عنوان یک مثال ملموس، شما ممکن است بخواهید یک رابط کاربری تعاملیتری داشته باشید که نیازمند ارتباط مداوم با سرور باشد. در چنین مواردی، میتوانید از HTTP برای برقراری اولین اتصال و سپس درخواست Upgrade به WebSocket برای اتصال مداوم استفاده کنید. در این حالت، HTTP تنها یک نقطه شروع خواهد بود و تا زمان برقرار بودن ارتباط از WebSocket استفاده خواهید کرد.
کد نمونه برای استفاده از Upgrade
GET /chat HTTP/1.1
Host: example.com
Connection: Upgrade
Upgrade: websocket
توضیحات کد
در اینجا یک درخواست HTTP برای ارتقا به WebSocket را مشاهده میکنید:
GET /chat HTTP/1.1
این خط درخواست میکند که به مسیر /chat در سرور متصل شویم، با این گویش که از نسخه ۱.۱ پروتکل HTTP استفاده شده است.
Host: example.com
در این خط نام میزبان سرور مشخص شده است که درخواست به آن ارسال میشود.
Connection: Upgrade
این خط به سرور میگوید که میخواهیم یک اتصال ارتقا یافته داشته باشیم.
Upgrade: websocket
ما به سرور اعلام میکنیم که میخواهیم به پروتکل WebSocket برویم.