hi,
Das habe ich versucht:
Header('HTTP/1.0 204 No Content');
Header('HTTP/1.0 205 Reset Content');
Getestet habe ich mit IE6 und Firefox 0.9.2.
Auf den Header 204 reagieren die beiden zumindest richtig, soweit ich das verstanden habe: sie machen nach dem absenden des formulars überhaupt nichts (die geladene Seite bleibt stehen).
jepp, korrekt.
"If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent."
(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
Wärend der IE6 auf den Header 205 mit dem neu Laden der Seite aus dem Cache reagiert (scheint mir), statt nur die formularfelder zurückzusetzen, macht der Firefox bei meinen Versuchen überhaupt nix.
"205 Reset Content
The server has fulfilled the request and the user agent SHOULD reset the document view which caused the request to be sent. This response is primarily intended to allow input for actions to take place via user input, followed by a clearing of the form in which the input is given so that the user can easily initiate another input action."
die formularfelder zu löschen ist also die korrekte aktion.
darüber, ob dies beispielsweise durch erneutes rendern der gecachten version des dokumentes passieren darf, finde ich dort nichts. würde also das verhalten des IEs als erlaubt bezeichnen.
das der firefox gar nichts macht, würde ich als fehler in der implementation deuten.
Frage 1
Ist die Schreibweise so richtig und evtl. eine andere empfehlenswerter?
sofern du folgendes beachtet hast:
"The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields."
bzw. bei 205: "The response MUST NOT include an entity."
Frage 2
habe ich die RFC richtig verstanden, dass in beiden Fällen die Seite nicht neu geladen werden soll?
ja.
das holen und neu rendern der gecacheten version würde ich dabei ggf. noch als korrekt ansehen. obwohl, wenn ich genauer darüber nachdenke - wenn du jetzt beispielsweise schon per DOM weitere objekte ins dokument eingefügt hättest, würden diese auch wieder verloren gehen ... dann wäre "If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent" evtl. doch eher so zu deuten, dass der browser in _exakt_ der ansicht bleiben sollte, die zum zeitpunkt des requests auch vorhanden war. aus dem cache holen wäre dann kontraproduktiv.
Frage 3
Reagieren andere Browser ähnlich "falsch" auf den Header 205?
k.A. - ausprobieren :-)
wofür beabsichtigst du dieses verhalten denn überhaupt zu nutzen?
frage 4
Wo finde ich evtl. ausfühliche Erklärungen zu allen Headern für Greenhorns möglichst in deutsch?
hmm, RFC 2616, abschnitt 10 auf deutsch zu finden, ist mir auf die schnelle auch nicht gelungen.
gruß,
wahsaga
"Look, that's why there's rules, understand? So that you _think_ before you break 'em."