Portál AbcLinuxu, 17. července 2025 06:43
Řešení dotazu:
<body onLoad="document.getElementById('form').submit()"> <form id="form"> ... </form> </body>
Mam web abc.cz na nem formular ktery odesle post data na abc.cz/test a zaroven presmeruje podle <form action="abc.cz/test">.Tomuhle pořád nerozumím. V HTML stránce máte formulář, který má uvedeno
action="abc.cz/test"
. To znamená, že když v prohlížeči dáte odeslat, prohlížeč data odešle právě na tuhle adresu – otevře spojení se serverem a pošle HTTP požadavek, jehož součástí jsou data formuláře. Server na tento požadavek odpoví, a odpověď zpracuje prohlížeč – pokud je to odpověď např. 200 OK
, zobrazí tělo odpovědi (zpravidla je to další HTML stránka), pokud je to některý z kódů pro přesměrování, provede přesměrování na novou adresu.
POST /akce.php HTTP/1.1 Host: server-1 Content-Length: 123 pole1=abc pole2=defAdresa i s parametry se pak zobrazí v adresním řádku prohlížeče. Kód 303 je definován až v HTTP 1.1, pro klienty HTTP 1.0 byste musel použít kód 302 (klienti jej chápou jako kód 303 v HTTP 1.1, i když to není zcela v souladu se standardem). Druhá možnost dělá přesně to, co jste požadoval, ale je dostupná až s protokolem HTTP 1.1 – využívá kód 307, který prohlížeči říká, že se má přesměrovat na jinou adresu, ale má použít stejnou metodu (a u POSTu tedy logicky i stejná data). Vypadalo by to tedy takhle:
HTTP 303 See other Location: http://server-2/akce.php?pole1=abc&pole2=def
GET /akce.php?pole1=abc&pole2=def HTTP/1.1 Host: server-2
POST /akce.php HTTP/1.1 Host: server-1 Content-Length: 123 pole1=abc pole2=defNikdy jsem to ale v praxi nezkoušel, takže nevím, jestli se dnes používané prohlížeče zachovají správně. Také je možné, že některé prohlížeče budou varovat, že se data odesílají na jinou doménu. Ale to už je na vás, abyste to vyzkoušel a otestoval
HTTP 307 Temporary Redirect Location: http://server-2
POST /akce.php HTTP/1.1 Host: server-2 Content-Length: 123 pole1=abc pole2=def
A |−> B (zde jste viditelně, toto je uvedeno v action form-u) '−> C (toto je provedeno na pozadí)NEBO
A −> B −> C −> B?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.