SVR1: Automatikus átirányítás használata a kliens-oldal helyett a szerver-oldalon
Alkalmazás
Szerver-oldali technológiák, beleértve a szerver-oldali szkript nyelveket és az átirányításra szolgáló URL vagy URL mintákkal működő szerver konfigurációs fájlokat.
Ez a technika az alábbiakra vonatkozik:
Leírás
A technikának az a célja, hogy elkerülje az egymás
után gyorsan letöltésre kerülő két weboldal okozta
zavart, ami akkor áll elő, ha az első letöltött oldal
átirányítja a felhasználót egy másik oldalra. Bizonyos
felhasználói programok a HTML meta
elemének
segítségével irányítják át egy bizonyos idő elteltével a
felhasználót egy másik oldalra. Ez a tulajdonság azonban
hozzáférhetetlenné teszi a lapot bizonyos felhasználók
számára, különös tekintettel a képernyőolvasókat
használókra. A szerver-oldali technológiák a felhasználók
megzavarása nélkül végzik el az átirányítást. A
szerver-oldali szkript vagy a konfigurációs fájl a 3xx
státus kóddal és a másik URL helyzetét meghatározó
fejléccel ellátott megfelelő HTTP válasz küldésére
utasítja a szervert. A válasz böngészőhöz történő
megérkezésekor a lokációra vonatkozó információk
megváltoznak és a böngésző az új URL-nek megfelelő oldalt
fogja megjeleníteni.
Példák
1. példa: JSP/Servlets
A Java Servlets vagy JavaServer Pages (JSP)
alkalmazói használhatják a
HttpServletResponse.sendRedirect(String
url)
kódokat.
Példa kód:
?
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
?
response.sendRedirect("/newUserLogin.do");
}
A kód a 302 státus kódot ("Megtalált") tartalmazó
választ, valamint az új URL elhelyezkedésére vonatkozó
információkat küldi el a felhasználónak. A
response.sendError(int code, String
message)
és az interfész
javax.servlet.http.HttpServletResponse által
meghatározott státus kód alkalmazásával lehetőség van
más státuskód beállítására is.
Példa kód:
?
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
?
response.sendError(response.SC_MOVED_PERMANENTLY, "/newUserLogin.do");
}
Abban az esetben, ha a munkafolyamat miatt az
alkalmazásban a
HttpServletResponse.encodeURL(String
url)
segítségével került az URL felülírásra,
akkor a HttpServletResponse.sendRedirect(String
url)
használata javasolt a
HttpServletResponse.encodeRedirectURL(String
url)
helyett. Az URL a
HttpServletResponse.encodeURL(String
url)
segítségével is felülírható, majd az új URL
továbbítható a
HttpServletResponse.sendRedirect(String
url)-hez
.
2. példa: ASP
A VBScriptel működő Aktív Szerver Oldal (ASP) esetén
a fejlesztők használhatják a
Response.Redirect
módszert.
Példa kód:
Response.Redirect "newUserLogin.asp"
vagy
Példa kód:
Response.Redirect("newUserLogin.asp")
Az alábbi kód egy specifikus HTTP státuskóddal kiegészített példa.
Példa kód:
Response.Clear
Response.Status = 301
Response.AddHeader "Location", "newUserLogin.asp"
Response.Flush
Response.End
3. példa: PHP
PHP alkalmazásakor a fejlesztők egy üres HTTP
fejlécet küldenek a header
módszerrel. Az
alábbi kód egy 301-es státuskódot, valamint egy új
lokációt küld. A státus nem egyértelmű meghatározása
esetén az átirányítási üzenet a HTTP 302 státuskódot
küldi.
Példa kód:
<?php
header("HTTP/1.1 301 Moved Permanently);
header("Location: http://www.example.com/newUserLogin.php");
?>
4. példa: Apache
Az Apache Web szerver az alábbi példa szerint is konfigurálható az átirányítás kezelésére.
Példa kód:
redirect 301 /oldUserLogin.jsp http://www.example.com/newUserLogin.do
Források
A források csak információs célokat szolgálnak, és csak angolul elérhetőek.
-
Use standard redirects: do not break the back button! (W3C QA Tip).
-
HTTP 301 Permanent Redirection Techniques ( Shailesh N. Humbad).
-
Interface javax.servlet.http.HttpServletResponse a Java Servlets 2.3 API dokumentációban.
-
header a PHP Kézikönyvben.
-
Apache Module mod_alias az Apache HTTP Server Version 2.2 Documentation-ban az Apache 2.2. szerinti átirányítás meghatározást írja le.
-
Module mod_alias in the Apache HTTP Server Version 1.3 Documentation az Apache 1.3.. szerinti átirányítás meghatározást írja le.
Kapcsolódó technikák
(jelenleg nincsenek)
Ellenőrzések
Folyamat
-
Keressen meg minden más weboldalra mutató hivatkozást vagy algoritmikus hivatkozást.
-
Az adott weboldalak URI-jára mutató minden egyes hivatkozás vagy algoritmikus hivatkozás esetében ellenőrizze, hogy a weboldal tartalmaz-e kliens-oldali átirányítást eredményező kódot (pl. meta elemet vagy szkriptet).
- Az adott weboldalak URI-jára mutató minden egyes hivatkozás vagy algoritmikus hivatlkozás esetében ellenőrizze, hogy a hivatkozott URI nem okoz-e átirányítást VAGY aktivál-e időkorlát nélküli szerver-oldali átirányítást.
Elvárható eredmények
-
A 2. lépés hamis ÉS a 3. lépés igaz.