Чат хуудсыг ачаалахаас өмнө сүлжээний панелийг нээж, дараа нь хуудасны хүрээг зурдаг хүсэлтийг биш, мессежийг зөөдөг хүсэлтийг ол. Бичиг баримт, скриптүүд, нэвтрэх үеийн солилцоо, чатын дамжуулалт бүгд өөр өөр хост руу явж болно. VPN чатыг эвдсэн гэсэн мэдээллийн ихэнх нь үнэндээ эдгээр дөрвөн хүсэлтийн аль нэг нь бүтэлгүйтсэнийг дүрсэлдэг. Тэдгээрийг дарааллаар нь ажиглагтун, хариулт ихэвчлэн эхний хоёр минутад харагдана.

Мессежийг зөөдөг хүсэлтийг ол

Хуудас тогтсоны дараа төрлөөр шүү: WebSocket тусдаа бичлэг болж харагдана, үйл явдлын урсгал өсөж буй хариулттай нээлттэй үлдэнэ, урт санал асуулга тогтмол завсарлагатай давтагдана. Шинэчлэлтийг зөөж буй бичлэгийн схем, хост, порт, төлөвийг бич. Холболт нэвтрэхээс өмнө эсвэл дараа эхэлснийг тэмдэглэ, учир нь баталгаажуулалтын өмнө нээгдсэн дамжуулалт ихэвчлэн түүний дараа нээгдсэнээс өөр загвартай. Шинэчлэлтийн хүсэлт эсвэл хүлээн зөвшөөрсөн агуулгын төрлийн хүсэлтийн толгойг унш, учир нь тэдгээр нь байршуулсан хуудасны үнэхээр сонгосон дамжуулалтыг тодорхойлдог.

Хуучин форумын нийтлэлүүд бүтээгдэхүүнүүд олон жилийн өмнө хэрэглэхээ больсон дамжуулалтыг дүрсэлдэг тул нийтлэлд биш, хөтчийн бичсэнд итгэ. Хэрэв бичлэг огт байхгүй бол клиентийн код холболтыг огт оролдоогүй байж магадгүй бөгөөд энэ нь өмнөх скрипт эсвэл тохиргооны алдааг заана. Хуудас ачаалагдах нь зөвхөн бичиг баримт ирснийг нотолж, яг энэ ялгаа нь та сүлжээг огт засаж байгаа эсэхийг тодорхойлно.

Тохиргоо, хүргэлт, амьдрах хугацаа өөр өөрөөр эвдэрдэг

WebSocket нь 101 төлөвөөр хариулагддаг HTTP шинэчлэлтээр нээгдэж, дараагийн бүх зүйл хуудас татах биш, хүрээт мессеж болно; энэ хоёр үе шатыг RFC 6455 тодорхой тусгаарладаг. Үйл явдлын урсгал нь урсгалын агуулгын төрлөөр хариулж, хариултын их биеийг нээлттэй барина. Хоёулаа нээгдэхгүй, нээгдээд юу ч хүргэхгүй, эсвэл нээгдэж, хүргээд дараа нь чимээгүй үхэж болно.

wscat -c wss://chat.example.com/socket -H "Origin: https://chat.example.com"
curl -N -H "Accept: text/event-stream" https://chat.example.com/events

Профайлд хүрэхээс өмнө эхний утга учиртай алдааг барь, учир нь гурван цаг хугацааны цэг өөр өөр давхаргад заана. Гарын барилт хэзээ ч дуусахгүй бол түүнийг ижил хост руу энгийн HTTPS хүсэлттэй харьцуулж, түүнд ямар нэг зүйл хүрч байгаа эсэхийг хар. Дуусаад мессеж ирэхгүй бол өөр бүртгэлээс туршилтын мессеж илгээж байх үед хүрээ эсвэл урсгалын их биеийг ажигла. Ажиллаад дараа нь зогсвол яг цаг хугацаа болон хаалтын кодыг бич, учир нь энэ хос аль тал бууж өгснийг тодорхойлно.

1006 код нь сокет хаалтын хүрээгүйгээр хаагдсаныг илэрхийлнэ, завсрын төхөөрөмж эсвэл сул зогсолтын таймаут хөтчийн дотроос яг ийм харагддаг. VPN-ийн зүрхний цохилт нь дотоод програмын сесс амьд хэвээр байгааг нотолохгүй.

Шууд хост нь тусдаа очих газар

Чатын бэкендүүд ихэвчлэн өөрийн хост нэр дээр ажилладаг, заримдаа өөр порт дээр эсвэл тусдаа сертификатын ард. Тэр очих газарт өөрийн шийдэл, маршрут, прокси боловсруулалт хэрэгтэй бөгөөд хуваасан туннель хуудсыг оруулаад сокетыг хасаж болно. Шууд хост нэрийг клиент машинаас шийдэж, тухайн сүлжээнд хүлээж буй хаягаар хариулж байгаа эсэхийг батал. Сертификатын хэлхээг яг тэр хост нэрээр шалга, учир нь сайтыг хамрах wildcard нь сокетын төгсгөлийн цэгийг үргэлж хамрахгүй.

Замд прокси байвал буферлэхийн оронд шинэчлэлт эсвэл урт насалсан хариултыг зөвшөөрч байгаа эсэхийг батал. HTML-ийг дахин бичдэг корпорацийн проксигууд WebSocket шинэчлэлтийг ихэвчлэн муу боловсруулдаг бөгөөд үр дүнд хуудас зурагддаг ч чат хэзээ ч холбогддоггүй. Тиймээс нэг бүтээгдэхүүн рүү хоёр хүсэлт нь нэг хост руу хоёр хүсэлт биш.

Аюулгүй байдлын шалгалтыг биш, очих газрын жагсаалтыг зас

Очих газрын жагсаалтыг засах нь маршрутын өөрчлөлт бөгөөд маршрутын эзэнд хамаарна. Сертификатын баталгаажуулалтыг сулруулах эсвэл Origin толгойг хасах нь аюулгүй байдлын өөрчлөлт бөгөөд бодлогын эзэнд хамаарах бөгөөд тэр нь тасалбарыг засаж буй хүн байх нь ховор. Холболтыг бий болсон мэт харагдуулах хамгийн хурдан арга нь ихэвчлэн осол гаргах боломжийг бий болгох хамгийн хурдан арга.

Ямар нэг зүйлийг өөрчлөхөөс өмнө бэкенд ямар origin хүлээж авдаг талаар програмын эзнээс асууж, тэр хариултыг проксийг удирддаг хүнд дамжуул. Сертификатын алдаа зөвхөн туннелээр гарч байвал тойрч гарах арга суулгахын оронд саатуулж буй төхөөрөмжийг шалга.

Шилжүүлэн өгөхөд хангалттай бич

Хэрэгтэй артефакт богино: хуудасны URL, шууд төгсгөлийн цэг, гарын барилтын үр дүн, эхний алдааны цаг, дахин холбогдох оролдлого хийсэн эсэх. VPN профайлын нэр болон ямар сүлжээнд байснаа нэм, тэгвэл уншсан хүн зургаан асуулт асуулгүйгээр туршилтыг давтаж чадна. Күүки, зөвшөөрлийн толгой, мессежийн их биеийг нууж, бүрэн архивын экспортоос илүү цагийн баганын дэлгэцийн зураг сонго. Хүрээ болон сүлжээний архивт хувийн мессеж, сессийн токен байж болзошгүй тул ямар нэг зүйлийг хавсаргахаас өмнө шалга.

Хэрэв алдаа нь чимээгүй хаалт бол хаалтын код болон түүний өмнөх сул зогсолтын интервалыг оруул, учир нь энэ хос ихэвчлэн таймаутын эзнийг тодорхойлдог. Таймаутын утгыг өөрөө таамаглахын оронд бичлэгийг програмын эсвэл гарцын эзэнд шилжүүл. Дэмжигдсэн keepalive зан төлөвийн тухай тэдний хариулт нь тасалбарыг хаадаг хариулт.

Холбоотой нийтлэлүүд