این مقادیر املای رقیب یک حالت واحد نیستند:

Connection: Upgrade
Connection: keep-alive, Upgrade

دومی دو گزینه اتصال را فهرست می‌کند. HTTP سرآیند Connection را فهرستی جداشده با کاما تعریف می‌کند که نام گزینه‌ها به بزرگی و کوچکی حروف حساس نیست. کدی که کل مقدار را با رشته دقیق Upgrade مقایسه می‌کند، فهرست معتبری را که آن گزینه را دارد از دست می‌دهد.

برای ارسال معمولی، یک واسط HTTP فیلد ورودی را تجزیه می‌کند، فیلدهایی را که گزینه‌هایش نام برده‌اند حذف می‌کند، سپس خود Connection را حذف می‌کند یا آن را با گزینه‌های کنترل خود برای اتصال بعدی جایگزین می‌کند.

حذف تنها یک فیلد Keep-Alive سخت‌کدشده کافی نیست. یک پیام می‌تواند فیلد دیگری مخصوص اتصال را در فهرست نام ببرد و آن فیلد نباید به ارسال معمولی نشت کند.

پشتیبانی از ارتقای پروتکل نیازمند رفتار آگاهانه با دو اتصال و پروتکل جدید است. کپی کورکورانه سرآیندهای Upgrade ورودی، اجرای آن تحویل نیست.

وقتی یک مرورگر کار می‌کند و دیگری شکست می‌خورد، مقادیر واقعی فیلدها را در دو سوی واسط مقایسه کنید. تفاوت میان یک توکن و فهرستی از دو توکن می‌تواند خطای تجزیه‌گر را آشکار کند بی‌آنکه مرورگر مجبور به تقلید قالب‌بندی دقیق مرورگری دیگر شود.

این به پیام‌های HTTP مربوط است که پروکسی تجزیه می‌کند. تونل معمولی HTTPS CONNECT فیلد Connection وب‌سایت رمزنگاری‌شده را در برابر آن پروکسی آشکار نمی‌کند.

مقالات مرتبط