Shakl yuboriladi, aylanuvchi belgi paydo bo’ladi va konsol JSON ichida 0 o’rnida kutilmagan < belgisi borligini aytadi. Sahifaning o’zi yaxshi yuklanadi, shuning uchun birinchi fikr tahlilchi yoki tunnelni ayblash bo’ladi. Odatda ikkalasi ham ishtirok etmaydi: yuborish sahifani yuklashdan boshqa so’rov, va u JSON bo’lmagan narsa bilan qaytdi. Brauzer haqiqatda ochib beradigan tartibda ishlang, chunki to’rtta mumkin bo’lgan javob to’rt xil tuzatishni talab qiladi.

1-bosqich: haqiqatda bo’lgan yuborishni ushlang

Yuborishdan oldin Tarmoq panelini oching, jurnalni o’tishlar orasida yozuvlarni saqlaydigan qilib sozlang, so’ngra foydalanishga ruxsat berilgan hisobda bitta zararsiz sinov yuborishini bajaring. Sahifaning hujjat so’rovini emas, shaklning o’zi boshlagan so’rovni tanlang.

Filtrlarga ehtiyot bo’ling. XHR yoki Fetch filtri qulay, lekin ramka hali ham yashirin iframe yoki dinamik yaratilgan shakl orqali yuborsa, filtr yagona muhim so’rovni yashiradi. Avval filtrsiz bir marta yuboring va nima kelganini ko’ring.

Tanlangan so’rov uchun har qanday talqindan oldin olti narsani yozing: usul, so’rov satri bilan to’liq URL, holat, qayta yo’naltirishlar zanjiri, javobning Content-Type va tananing birinchi satrlari. Chrome DevTools Tarmoq paneli qo’llanmasi bular joylashgan Headers, Response va Initiator ko’rinishlarini qamrab oladi, boshqa brauzerlardagi mos panellar ham xuddi shu maydonlarni ko’rsatadi.

2-bosqich: bu siz o’ylagan so’rov ekanini tasdiqlang

Hayratlanarli darajada ko’p JSON xatolari aslida marshrutlash xatolaridir. Agar yuborish ishlovchisi preventDefault chaqirishdan oldin istisno tashlasa, brauzer action atributida yozilgan manzilga mahalliy shakl POSTini amalga oshiradi va server to’liq HTML sahifa bilan javob beradi. Ishlovchi hech qachon ishlamaydi, demak JSON hech qachon so’ralmagan.

Paneldagi URLni JavaScriptingiz chaqiradigan URL bilan solishtiring. Boshqa joyda tugaydigan qayta yo’naltirish, yetishmayotgan yoki ortiqcha oxirgi qiyshiq chiziq, usul nomuvofiqligi yoki ko’chgan sahifadan nisbiy yo’lga yuboruvchi shaklni qidiring. Qayta yo’naltirishlar zanjirini oxirigacha kuzatib, birinchisini emas, oxirgi URLni yozib oling.

Keyin boshlovchini tekshiring. Agar so’rov skriptingizdan emas, hujjat o’tishidan kelgan bo’lsa, muammoni allaqachon topdingiz va javob tahlilchisidagi hech qanday o’zgarish yordam bermaydi.

3-bosqich: natijani to’rt toifaga ajrating

Har bir natija aynan ulardan biriga tegishli, toifa esa keyin qayerga qarashni belgilaydi.

What you seeCategoryWhere to look
Request never finishes, TLS or connection errorNo usable responseEndpoint reachability, certificate, front-end timeout
Request completes, script gets an opaque failureAccess blockedCross-origin policy, credentials mode, missing response header
200 with an HTML body or a login formWrong representationRedirect, expired session, route fallback, error handler
Body begins with a notice then valid JSONWrong representationServer-side warning output before serialisation
Valid JSON, framework rejects itContract mismatchEnvelope shape, field names, value types

O’rta qatorlar odamlar noto’g’ri tashxislaydiganlaridir, chunki holat 200. Qayta yo’naltirishdan keyin yetib boriladigan kirish sahifasi juda yaxshi HTTP javobi va juda yomon JSON hujjati. application/json kontent turi buni tuzatmaydi: bu faqat yorliq, noto’g’ri yorliqlangan tana hamon tahlil qilinmaydi. Kirish bloklangan degani tugallangan so’rovga o’xshaydigan qator: panel holatni ko’rsatadi, lekin o’zaro kelib chiqish siyosati tanani ushlab turadi, shuning uchun chaqiruvchi skript uchun u vaqt tugashi kabi foydasiz.

To’rtinchi qator eski PHP va ramka to’plamlarida ham shunchalik keng tarqalgan. Kodlangan yuklamadan oldin chop etilgan eskirish haqidagi ogohlantirish hech bir JSON tahlilchisi qabul qilmaydigan tana hosil qiladi va ko’pincha o’sha ogohlantirish butun tushuntirish bo’ladi.

4-bosqich: tahlilchi xatosini so’zma-so’z o’qing

Xato matni tahlilni buzgan birinchi belgini nomlaydi va bu odatda hech qanday taxminsiz toifani aniqlaydi.

Error text (Chrome/V8)What it means
Unexpected token < in JSON at position 0The body starts with markup: an HTML page or an error document
Unexpected end of JSON inputEmpty body, or the response was truncated
Unexpected token o in JSON at position 1You parsed something already parsed, typically an object rather than text
Unexpected token uThe body starts with the bare word undefined, usually an empty response rendered as a string

200 bilan bo’sh tana alohida holat: yakuniy nuqta ishladi, hech narsa ishlab chiqarmadi va pastdagi narsa buni muvaffaqiyat deb qabul qildi. Bu uzatish emas, ilova shartnomasining nosozligi va uning o’rni proksida emas, keyingi bosqichda. Firefox va Safari o’sha to’rt nosozlikni boshqacha ifodalaydi, shuning uchun aniq satrga emas, belgi yoki bo’sh tanaga moslang.

5-bosqich: dalillar ko’rsatgan qatlamni tuzating

Marshrutlash muammosida so’rovni tuzating: actionni to’g’rilang, ishlovchining yiqilishiga yo’l qo’ymang, yakuniy nuqta va usulni moslang va qayta sinang. Tasvirlash muammosida tanani hosil qilgan narsani tuzating va ma’lumot kutilgan joyda xato hujjati nima uchun qaytishini aniqlang. Shartnoma muammosida ramkaning ishlatayotgan versiyangiz uchun haqiqiy kutilgan tuzilishini o’qing va mijozni bo’shatish o’rniga javobni shunga mos shakllantiring.

Kirishi bloklangan javob o’z aylanishini talab qiladi, chunki so’rovning o’zi to’g’ri bo’lishi mumkin va tana kodingizga hech qachon yetib bormasligi mumkin. Javobning Access-Control-Allow-Origin qiymatini brauzer yuborgan aniq Origin bilan solishtiring va joker belgi hisob ma’lumotlari bo’lgan so’rovni qanoatlantirmasligini yodda tuting. Mijozdagi credentials: 'include' ni serverdagi Access-Control-Allow-Credentials: true bilan juftlang va chaqiruv no-cors rejimini ishlatgan-ishlatmaganini tekshiring, u yerda shaffof bo’lmagan tana nuqson emas, hujjatlashtirilgan natija.

Tahlilchini yumshoqroq narsa bilan almashtirish yagona qochish kerak bo’lgan tuzatishdir. Javobni kod sifatida baholash yoki tahlil qilinmaguncha matnni qirib tashlash shartnoma nomuvofiqligini yashiradi va sukunat evaziga in’ektsiya yuzasini qo’shadi. Xuddi shunday holatni tanadan alohida tekshirish zarur: ilova darajasidagi xato obyektini olib yuruvchi 200 ko’plab APIlarda odatiy va yuklamani o’qib ishlov berish kerak.

Boshqa birovning yordami kerak bo’lganda xom eksport o’rniga minimal yozuvni ulashing — usul, URL, holat, qayta yo’naltirishlardan keyingi yakuniy URL, javobning kontent turi, tananing shakli va kutilgan shartnoma. Tarmoq arxivlarida cookie, token, so’rov satrlari va shakldagi shaxsiy ma’lumotlar bo’ladi, avtomatik tozalagich esa ko’rib chiqish emas.

  • Har qanday kodni o’zgartirishdan oldin so’rovni filtrsiz ushlang.
  • Boshlovchi skriptingiz bo’lganini va yakuniy URL sizning yakuniy nuqtangiz ekanini tasdiqlang.
  • Tahlilchiga tegishdan oldin javobni tasniflang.
  • Marshrutlash, kirish, tasvirlash yoki shartnomani tuzating va hech qachon tahlilchini bo’shatish bilan emas.

O'xshash maqolalar