Wstecz
|
Dalej
|
Wartością pola Location jest adres, do którego chcemy przekierować przeglądarkę. Może to być zarówno adres bezwzględny (Location: http://www.serwer.com/katalog/plik.html), jak i względny (Location: plik.html) - wówczas nazwa pliku interpretowana jest jako znajdująca się na tym samym serwerze i w tym samym katalogu, co skrypt, z ktorego dokonujemy przekierowania. W obydwu przypadkach serwer WWW wyśle do przeglądarki użytkownika odpowiedni komunikat sygnalizujący konieczność przejścia do nowego adresu. Natomiast jeżeli jako wartość pola Location podamy tekst zaczynający się od znaku "/" (np. Location: /katalog/plik.html), wówczas nastąpi tzw. przekierowanie wewnętrzne - serwer po prostu wyśle wprost do przeglądarki zawartość wskazanego pliku, tak jakby przeglądarka odwołała się bezpośrednio do niego (poprzez adres http://www.serwer.com/katalog/plik.html), a nie do skryptu.
Pole Status służy do zasygnalizowania serwerowi, a w dalszej kolejności przeglądarce, nienormalnego zakończenia wykonywania skryptu (np. z powodu braku potrzebnego pliku, nieprawidłowych danych itp.). Wartość pola Status ma postać: nnn komentarz gdzie nnn jest trzycyfrową liczbą określającą kod błędu zdefiniowany w protokole HTTP, a komentarz - krótkim słownym komentarzem opisującym znaczenie tego kodu. Komentarz można pominąć, jednakże podanie go jest zalecane. Przykładowo, jeżeli chcemy wyświetlić informację o braku pliku, możemy skorzystać ze zdefiniowanego w protokole HTTP kodu 404 wraz z odpowiednim komentarzem:
Status: 404 Nie znaleziono pliku
W przeciwieństwie do innych pól nagłówka, pole Status nie jest przez
serwer przekazywane do przeglądarki użytkownika, lecz używane do
skonstruowania kodu odpowiedzi HTTP, stanowiącego pierwszy
wiersz nagłówka generowanego przez serwer. Normalne zakończenie
operacji (brak błędu) sygnalizowane jest przez serwer odpowiedzią
(por. przykład w poprzednim rozdziale) "HTTP/1.1 200 OK".
Wypisanie przez skrypt pola Status takiego jak w powyższym
przykładzie spowoduje, że zamiast powyższej odpowiedzi przeglądarce
zostanie przekazana odpowiedź "HTTP/1.1 404 Nie znaleziono
pliku". Nie wystarczy jednak poprzestać na samym polu Status -
niezbędne jest także podanie pola Content-type i treści dokumentu
informującej bardziej szczegółowo o zaistniałym błędzie. W przeciwnym
razie bowiem użytkownik zobaczyłby w przeglądarce pusty dokument (!)
i nie mógłby się zorientować, co się stało (treść odpowiedzi HTTP nie
jest widoczna wprost). Tak więc pełna odpowiedź wypisywana przez
skrypt mogłaby w tym przypadku wyglądać np. tak:
Status: 404 Nie znaleziono pliku
Content-type: text/html; charset=iso-8859-2
<html>
<head><title>Błąd !</title></head>
<body>
<h1>Błąd !</h1>
Skrypt nie znalazł pliku o podanej nazwie.
</body>
</html>
Warto jeszcze zwrócić uwagę, że specyfikacja CGI określa
specjalny sposób traktowania skryptów, których nazwy zaczynają się od
ciągu znaków nph-. Nagłówki wypisywane przez te skrypty nie są
w żaden sposób interpretowane ani uzupełniane przez serwer (litery
nph są skrótem od non-parsed headers - nieanalizowane
nagłówki), lecz w całości przesyłane bezpośrednio do przeglądarki.
Skrypty takie muszą więc, zamiast uproszczonego nagłówka omawianego
powyżej, wypisywać przed dokumentem pełny nagłówek HTTP, wraz z kodem
odpowiedzi i wszystkimi wymaganymi protokołem polami. Ten rodzaj
skryptów stosuje się zwykle w sytuacji, gdy operacja, którą ma
wykonać skrypt, jest długotrwała. W przypadku zwykłych skryptów CGI
dokument wygenerowany przez skrypt jest wysyłany do przeglądarki
dopiero po całkowitym zakończeniu działania skryptu. Gdy więc skrypt
działa długo, użytkownik czeka na wyświetlenie strony nie wiedząc, co
się dzieje (czy nastąpiło w ogóle połączenie z serwerem?). W
przypadku skryptów typu nph wypisywany przez nie dokument jest
wysyłany do przeglądarki na bieżąco, zatem można najpierw przesłać
początek strony (zawierający np. informację "Proszę czekać"), który
zostanie wyświetlony przez przeglądarkę, a po zakończeniu działania
skryptu - resztę dokumentu.
Wstecz
|
Dalej
|
Jarosław Rafa 2000.
Tekst udostępniony na licencji Creative Commons (uznanie autorstwa -
użycie niekomercyjne - bez utworów zależnych). Kliknij tutaj, aby dowiedzieć się, co to oznacza i co
możesz z tym tekstem zrobić. W razie jakichkolwiek wątpliwości
licencyjnych bądź w celu uzyskania zgody na rozpowszechnianie wykraczające
poza warunki licencji proszę o kontakt e-mailem: raj@ap.krakow.pl.
Wersja HTML opracowana 11.10.2000.
Powrót do spisu treści
|
Statystyka
|