2009-08-23 3 views
1

Ich habe ein kleines „SOAP CGI gatewqay“ C++ Programm, das eine HTTP-SOAP-Anforderung von cin liest aus die Informationsanforderung und sendet sich an den Legacy-Server . Dann nimmt er die Antwort, formatiert sie als SOAP-Antwort und schreibt sie an cout.Wie man einen 500 HTTP-Status von einem C++ CGI-Programm zurückzukehren

Im Falle eines Fehlers, schreibt er eine < SOAP-ENV: Störung> reponse zu cout. Allerdings besagt the SOAP standard, dass im Falle eines Fehlers der zurückgegebene HTTP-Status 500 "Interner Serverfehler" sein sollte. Dieses SOAP-CGI-Gateway sollte auf jedem Webserver ausgeführt werden, der CGI unterstützt. Was ist der richtige Weg, um den HTTP-Status zu setzen, der vom Webserver zurückgegeben wird, wenn das CGI zurückkehrt?

Danke, splintor

Antwort

4

Sie schreiben einen "Status: Fehler 500 Internal Server" auf die Header. Dies muss geschrieben werden, bevor irgendwelche Inhalte natürlich geschrieben werden.

+0

Danke. Ich fand das auf anderen Q & A-Seiten, sowie http://stackoverflow.com/questions/833715/returning-http-status-codes-in-python-cgi, konnte aber keinen Standard finden, der dieses CGI-Verhalten beschreibt der Status HTTP-Header. Wird dies von allen Webservern unterstützt, die CGI unterstützen? – splintor

+0

Es ist, wie ich mich erinnere, ein Teil des CGI-Standards, also wäre es eine sichere Sache. –

+0

@ Splitter: Siehe Abschnitt 6.3.3 von RFC 3875: http://www.ietf.org/rfc/rfc3875 – RichieHindle