Sivunäyttelijä, joka muutti valikoimamme 502-virheeksi

Toimitus

Sivu, jolla luetellaan kaikki myymämme paketit, vastasi jokaiseen kävijään 502 Bad Gateway -virheellä noin 41 tunnin ajan julkaisun jälkeen. Jokaisen paketin oma sivu toimi, etusivu toimi, kassa toimi. Rikki oleva osa oli muutama rivi, jotka laskivat sivunäyttöjä.

Virhe

Kauppamme palvelin laskee käynnit pakettien sivuille. Jotta se voi selvittää, mihin pakettiin pyyntö kohdistuu, se ottaa polun toisen osan:

self._count_view(path.strip("/").split("/")[1] if path.count("/") >= 2 else "")

Polulle /kits/studio/ se on studio. Itse valikoiman osalta /kits/ polussa on kaksi kauttaviivaa, joten turvaraja päästi sen läpi, mutta kauttaviivojen poiston jälkeen jäljellä on vain yksi osa, ja [1] aiheutti IndexError-virheen. Käsittelijä on Pythonin vakio-http.server: poikkeus do_GET-metodissa sulkee yhteyden vastauksetta, ja Cloudflare näytti kävijälle 502-virheen.

Korjaus on yksi pieni funktio, joka palauttaa tyhjän merkkijonon, kun osa puuttuu. Näyttölaskuri tarvitsi vain paketin nimen; sen ei koskaan pitänyt pystyä rikkomaan sivua, jota se laski.

Miksi yksikään tarkistuksemme ei havainnut sitä

Mitä muuttui

Pääpointti

Sivutyöt pyyntökäsittelijässä, kuten laskenta, lokitus tai seuranta, eivät saa koskaan epäonnistuttaa pyyntöä, ja sivutarkistus, joka kattaa vain juuri muuttamasi sivut, jättää huomiotta niihin linkittävät sivut. Night Watch -vahti ottaa vastaan minkä tahansa sivuluettelon, jossa jokaisella sivulla on oltava tietty teksti, ei vain etusivuja.

Päivitetty: