Įvadas
Naršydami internete vartotojai gali susidurti su įvairiomis klaidomis. Viena iš dažniausiai pasitaikančių klaidų yra 406 Not Acceptable klaida. HTTP 406 klaida, dar vadinama „Not Acceptable“, reiškia, kad serveris negali pateikti duomenų, kurie atitinka naudotojo užklausoje nurodytus parametrus. Ši klaida dažniausiai pasireiškia, kai serveris negali pateikti atsakymo, atitinkančio „Accept“ antraštės reikalavimus.
Šiame straipsnyje aptarsime, kas yra HTTP 406 klaida, kokios yra jos priežastys ir kaip ją ištaisyti, jei ji atsiranda jūsų svetainėje.
Kas yra HTTP 406 klaida?
Kai naršyklės siunčia užklausas serveriui, jos prideda „Accept“ antraštę, kuri nurodo serveriui, kokiais formatais naršyklė gali priimti duomenis. Jei serveris negali pateikti duomenų „Accept“ antraštėje nurodytu formatu, jis grąžina 406 Not Acceptable klaidą.
Šią klaidą taip pat gali sukelti modulis „mod_security“. „mod_security“ yra ugniasienės programinė įranga, naudojama „Apache“ serveriuose, skirta nuskaityti užklausas ir blokuoti nesaugius veiksmus. Jei užklausa pažeidžia nustatytas taisykles, serveris grąžina 406 klaidą.
Kas gali sukelti 406 klaidą svetainėje?
Dažniausiai 406 klaidą jūsų prieglobos paskyroje sukelia „mod_security“ taisyklės. „mod_security“ yra saugumo modulis, kuris pagal nutylėjimą įjungtas visose „Apache“ serveriuose veikiančiose prieglobos paskyrose. Jei svetainė, puslapis ar funkcija pažeidžia šias taisykles, serveris gali grąžinti 406 klaidą.
Kaip ištaisyti 406 Not Acceptable klaidą?
1. Peržiūrėkite klaidos pranešimą
Susidūrę su HTTP 406 klaida, serveris paprastai pateikia pranešimą su papildoma informacija apie klaidą. Pradėkite skaitydami šį pranešimą, kad suprastumėte tikslią problemą.
2. Patikrinkite užklausos antraštes
HTTP 406 klaida yra susijusi su „Accept“ antrašte naudotojo užklausoje. Ši antraštė nurodo, kokius medijos tipus gali priimti naudotojas. Serveris tikrina šią antraštę, kad nustatytų, ar gali pateikti duomenis atitinkančius naudotojo reikalavimus. Įsitikinkite, kad „Accept“ antraštė tinkamai sukonfigūruota.
Pavyzdys „Accept“ antraštės JSON duomenims gauti:
Accept: application/json
Pavyzdys „Accept“ antraštės JSON ir XML duomenims gauti:
Accept: application/json, application/xml
Kaip išjungti „mod_security“ ir ištaisyti 406 klaidą cPanel skydelyje:
„mod_security“ išjungimas
Jei įtariate, kad problema yra „mod_security“ modulyje, pabandykite jį laikinai išjungti konkrečiam domenui. Tai galite padaryti cPanel šiais žingsniais:
Prisijunkite prie cPanel: Naudokite savo prisijungimo duomenis, kad prisijungtumėte prie savo svetainės valdymo skydelio.
Saugumo skyrius: Ieškokite ModSecurity modulio.
Išjunkite „mod_security“ konkrečiam domenui: Suraskite norimą domeną sąraše ir išjunkite modulį naudodami atitinkamus nustatymus.
Išbandykite: Išjungę „mod_security“, pabandykite atidaryti savo svetainę ir patikrinkite, ar klaida dingo.
Svarbu: „mod_security“ išjungimas sumažina svetainės saugumo lygį. Įsitikinkite, kad iš naujo įjungėte jį po to, kai klaida bus pašalinta.
.htaccess konfigūravimas cPanel
.htaccess redagavimas: Prisijunkite prie cPanel Failų tvarkytuvės ir atidarykite .htaccess failą, esantį jūsų svetainės šakniniame kataloge.
Pridėkite konfigūracijų: Pridėkite instrukcijas į failą, kurios leis serveriui geriau apdoroti užklausas:
<IfModule mod_negotiation.c>
Options -Multiviews
</IfModule>
3. Pritaikykite „Accept“ antraštę
Jei 406 klaidą sukelia „Accept“ antraštė, pabandykite patikslinti, kokius medijos tipus leidžia jūsų serveris. Įsitikinkite, kad naršyklės užklausa tinkamai apibrėžia reikiamus formatus, pavyzdžiui:
Accept: text/html
Accept: application/json
Čia serveris pasirinks atsakymo formatą pagal naudotojo pageidavimus. Jei gaunate 406 klaidą, tikėtina, kad serveris negali pateikti turinio nurodytu formatu. Įsitikinkite, kad „Accept“ antraštėje nurodyti medijos tipai yra palaikomi serverio.
4. Naudokite bendruosius arba laukinių simbolių tipus
Jei serveris palaiko kelis medijos tipus, tačiau vis tiek gaunate 406 klaidą, galite pabandyti naudoti bendruosius tipus arba laukinių simbolių tipus „Accept“ antraštėje. Pavyzdžiui, galite nurodyti */*, kad parodytumėte, jog bet koks medijos tipas yra priimtinas:
Accept: */*
5. Patikrinkite serverio konfigūraciją
Įsitikinkite, kad serveris yra tinkamai sukonfigūruotas, kad galėtų apdoroti užklausas reikiamais formatais. Kartais neteisinga serverio konfigūracija gali sukelti 406 klaidą.
6. Išbandykite skirtingas „Accept“ antraštės reikšmes
Pabandykite naudoti skirtingas „Accept“ antraštės reikšmes savo užklausoje, kad įsitikintumėte, jog serveris gali pateikti turinį vienu iš nurodytų formatų. Tai gali padėti nustatyti konkretų medijos tipą, kuris sukelia problemą.
7. Susisiekite su serverio administratoriumi arba API tiekėju
Jei išbandėte visus galimus sprendimus, bet vis tiek susiduriate su HTTP 406 klaida, gali būti, kad problema yra serverio pusėje. Susisiekite su serverio administratoriumi arba API tiekėju ir pateikite savo užklausos detales bei gautą klaidą. Jie gali padėti išspręsti problemą.
8. Apsvarstykite 406 klaidų apdorojimo būdus
Jei kuriate kliento programą, svarbu tinkamai valdyti 406 klaidas. Galite sukurti procesus, kurie informuotų naudotojus apie klaidą arba užregistruotų klaidos detales tolimesniam tyrimui.
Išvada
Nors 406 Not Acceptable klaida gali atrodyti sudėtinga, tinkamu požiūriu ir diagnostika ją galima veiksmingai ištaisyti. Suprasdami šios klaidos priežastis ir taikydami taisymo metodus, galite pagerinti savo svetainės veikimą ir naudotojų patirtį.