Error decode JSON exrate
Kļūda"pieprasījuma galvene vai sīkfails ir pārāk liels
" Nginx sistēmā rodas, ja pieprasījuma galvenes vai sīkfaila izmērs pārsniedz maksimālo atļauto izmēru, kas ir iestatīts servera konfigurācijā. Šajā rakstā mēs detalizēti analizēsim, kāpēc tā notiek.
Kļūda rodas, ja HTTP/HTTPS pieprasījuma galvenes lielums pārsniedz atļauto limitu. Piemēram, pārlūkprogramma nosūta pārāk daudz sīkfailu vai tīmekļa serverim nosūtītais pieprasījums ir pārāk liels.
Pieprasījums parasti ir sadalīts divās daļās: galvenēs, kurās atrodas vispārīga informācija un meta dati, un pieprasījuma ķermenī. Pieprasījuma ķermenis, tāpat kā galvene, var būt dažāda lieluma - gan mazs, gan liels, un tā lielums parasti nerada problēmas. Tomēr, ja tīmekļa servera iestatījumos ir parametrs, kas ierobežo pieprasījuma galvenes garumu, visticamāk, tiks pieļauta šī kļūda.
Ir vairāki veidi, kā novērst šo problēmu
nginx.conf
konfigurācijas failā šādas rindas.GET
vietā izmantojiet POST
pieprasījumu. Ja problēma rodas, nosūtot GET
pieprasījumu ar lieliem parametriem, varat mēģināt GET
vietā izmantot POST
pieprasījumu.Lai novērstu šo kļūdu (ja esat Nginx tīmekļa servera administrators), ir jāpalielina maksimālais galvenes lielums, mainot parametru large_client_header_buffers
. Ja esat parasts tīmekļa vietnes, kurā radusies šī kļūda, lietotājs, jums jāgaida, kamēr resursa administrators kļūdu novērsīs.
Jums ir jānoregulē parametrs large_client_header_buffers
, kurā ir divi skaitļi, piemēram, 4 un 8 (kas ir iestatīti pēc noklusējuma). Pirmais skaitlis ir vērtība, kas nosaka maksimālo buferu skaitu, un otrais skaitlis ir bufera lielums, kurā tiek nolasīta pieprasījuma galvene. Otrais parametrs tiek iestatīts kilobaitos.
Šo rindu pievieno Nginx konfigurācijas faila http sadaļai vai konkrētas vietnes servera sadaļai. Nginx vietnes konfigurācijas faili parasti tiek glabāti /etc/nginx/conf.d/
vai /etc/nginx/sites-available/
(atkarībā no tā, kā Nginx tika instalēts - izmantojot standarta operētājsistēmas repozitorijus vai izmantojot Nginx repozitoriju).
Lai pielāgotu vērtību, varat iestatīt skaitļus 8 un 64, kas piemēroti lielu galvenu glabāšanai. Parametrs izskatīsies šādi:
large_client_header_buffers 8 64k;
Pēc izmaiņu veikšanas konfigurācijas failā Nginx ir jārestartē, izmantojot komandu:
sudo systemctl reload nginx
Šīs ir metodes, kā novērst šo problēmu.