ugrás a tartalomhoz

HTTP fejlécek és hibakezelés

haasz · 2011. Május. 13. (P), 22.31
Szeretném megoldani, hogy a hibaoldalakat ne cache-eljék a böngészők, ezért szükség volna arra, hogy a hibaoldalak fejlécét módosítani tudjam. Az nagyszerű lenne, ha ezeket a beállításokat nem csak statikusan tudnám megadni, hanem dinamikusan is módosíthatóak lennének, de egyelőre még az alap feladattal is gond van, mégpedig:

1. Ha a szerver (Apache 2.2) alapértelmezett hibaoldalait használom, akkor nem tudom módosítani a fejléceket (legalábbis eddig nem találtam működő megoldást erre, még a szerver központi konfigurációs beállításai között sem, pedig az esetemben - a kód hordozhatósága érdekében - a .htaccess fájlt kellene használni).

2. Ha egyedi hibaoldalakat használok, akkor már több módszer is létezik a fejlécek módosítására, de ekkor a hibaoldal fájlokat kívülről közvetlenül is meg lehet hívni, nem csak hiba esetén, és ezt szintén szeretném elkerülni.

3. Ha pedig olyan helyre teszem a hibaoldalakat, ahol közvetlenül nem lehet elérni őket, akkor a szerver hiba esetén sem tudja kiszolgálni a hibaoldal fájlokat.

Olyan frappáns megoldást keresek, amely megfelel a fenti feltételeknek, azaz módosítani tudom vele a hibaoldalak fejlécét, és nem lesznek a hibaoldal fájlok közvetlenül elérhetőek, mindemellett a megoldás legyen egyszerű, ne álljon több száz kódsorból. Ha valaki tud ilyet, ossza meg! Szerintem többen örömmel vennénk azt is, ha valaki, aki járatos a HTTP fejlécek módosításának lehetőségeiben írna egy kis összefoglalót a témában. Előre is kösz!

Ui.: Szerver oldali nyelvként PHP-t használok, tehát a .htaccess mellett még erre tudok támaszkodni.
 
1

Hibaoldalak

janoszen · 2011. Május. 13. (P), 22.46
1. Ha mod_headers van a gépen, akkor tudod módosítani szerintem, de ez csak hirtelen eszembe jutott, megesküdni nem mernék rá.

2. Egyedi hibaoldalaknál lásd be, hogy a /404.php és a /nemletezik oldal meghívása dettó ugyanazt az oldalt fogja produkálni, ha jól végezted a dolgodat. Ergó semmivel sem lesz beljebb a kliens, ha a "real" 404.php-ra fut rá, mint ha egy tökéletesen nem létező oldalra.

3. Ez így van.

+1. ha a teljes kiszolgálást egy darab belépőponton keresztül kezeled (index.php), akkor onnantól kezdve teljesen nálad van a labda, hogy mire szolgálsz ki 404-et és mire nem.
3

Tapasztalatom szerint

haasz · 2011. Május. 14. (Szo), 13.30
1. Az alapértelmezett hibaoldal fejlécét ekkor sem tudom módosítani, csak az egyedi hibaoldalét.

2. Ez a 404-nél rendben van, de más hibaoldalaknál már jelentésbeli eltérés mutatkozik, ugyanis minden hibaoldalnak 404-et kellene küldenie közvetlen elérésnél, nem pedig a saját értékét (403, stb.), hiszen ez jelentené azt a kliensnek, hogy ott nincs is ilyen fájl.

+1 Ez az, ahol elvész a "frappáns" jelző, és bejön a kemény kódolás :)
5

Háát

janoszen · 2011. Május. 14. (Szo), 19.27
2. Szerintem, a $_SERVER['REQUEST_URI'] értékét vizsgálva egész könnyen lehet 404-es hibaoldalt hazudni. Ez ne legyen már probléma. ;) Főleg, ha mondjuk megnézed a __FILE__ vagy PHP_SELF értékét.

+1: igazából manapság legjobb tudomásom szerint így működnek a profi webalkalmazások. Odáig is elmegyek, hogy ha OOP/MVC szemléletet akarsz követni, akkor a $_GET, $_POST, $_SESSION, stb szuperglobálisokat is fedd el valamilyen osztállyal, mert akkor sokkal könnyebb lesz tesztet írni a kódodra vagy egységesen implementálni valamit, mint ha mindenki egy közös globális spaceben turmákol.
2

Hibaoldal meghívása

vbence · 2011. Május. 14. (Szo), 10.42
Ha egyedi hibaoldalakat használok, akkor már több módszer is létezik a fejlécek módosítására, de ekkor a hibaoldal fájlokat kívülről közvetlenül is meg lehet hívni, nem csak hiba esetén, és ezt szintén szeretném elkerülni.

... persze kérdés ki fogja kitalálni hogy a hibaoldalad a
/1f3870be274f6c49b3e31a0c6728957f.html
4

Valami hasonló

haasz · 2011. Május. 14. (Szo), 14.26
Valami hasonló jutott nekem is az eszembe: A .htaccess fájlból hiba esetén egyedi query string-gel hívom meg a hibaoldalt, az oldal feladatának megfelelően viselkedik, ha megkapja ezt az azonosítót, de 404-et küld ha nem. Például 403-as hibaoldal beállítása a .htaccess-ben:
ErrorDocument 403 /403.php?a1523ef227ebaa1b45a395f11cb2a883
A 403.php fájl csak akkor küld 403-as hibaüzenetet, ha a fenti formában hívjuk meg, egyébként 404-et ad.

Csak az a gondom, hogy nekem ez és a másik megoldás is kicsit tákolás ízű, emellett a kód különböző helyeken történő felhasználása esetén telepítéskor gondoskodni kellene az egyedi azonosítók generálásáról és beállításáról, ez pedig megint a kódolást növeli.

A rendszer által biztosított, egyszerű megoldást keresek, már ha létezik ilyen egyáltalán.
6

01. ErrorDocument 403 /403.php?a1523ef227ebaa1b45a395f11cb2a883

Ronyn · 2011. Május. 15. (V), 23.59
Hmm,és ez lenne akkor az a frappáns megoldás...
7

???

haasz · 2011. Május. 16. (H), 01.42
Nem tudom végig olvastad ezt a pár sort, amihez most "csak úgy" hozzászóltál? A "Csak az a gondom..." kezdetű bekezdésből kiderül, hogy a saját ötletemet sem tartom frappánsnak. Ha annak tartottam volna, akkor ezt a fórumot sem indítom el. Ha Te rendelkezel ilyen ötlettel, akkor a "Hmm" mellett azt is oszd meg velem! Megköszönöm.