Ich arbeite auf einem HTTP-Server mit Boost, und ich habe einige Fragen über die Bildung der HTTP-Antwort, insbesondere die Kopfzeile.Erstellen einer HTTP-Antwort mit Zeichenfolgen
Hier ist der Code die GET-Antwort zu montieren:
std::string h = statusCodes[200]; // The status code is already finished with a '\r\n'
std::string t = "Date: " + daytime_() + "\r\n";
std::string s = "Server: Muffin 1.0\r\n";
std::string content = search->second();
std::string type = "Content-Type: text/html\r\n";
std::string length = "Content-Length: " + std::to_string(content.size()) + "\r\n";
res = h + t + s + length + type + "\r\n" + content + "\r\n";
Als sie auf diesen website sagen, hier ist die Header-Spezifikation:
Das Format der Anfrage- und Antwortnachrichten ähnlich sind, und Englisch-orientiert. Beiden Arten von Nachrichten bestehen aus:
- eine Anfangszeile, kein oder mehr Kopfzeilen,
- eine leere Zeile (dh ein CRLF von selbst),
- und einem optionalen Nachrichtenkörper (zum Beispiel einer Datei, oder Abfragedaten oder Abfrageausgabe).
Aber wenn ich eine Anfrage auf dem Server zu tun, nur das Datum in der Kopfzeile geht, der Rest direkt in dem Inhalt
HTTP/1.1 200 OK // Header
Date: Tue May 24 10:28:58 2016 // Header
Server: Muffin 1.0 // Content
Content-Length: 31
Content-Type: text/html
This is supposed to be an ID
Ich weiß nicht, was daran falsch ist, Es ist das erste Mal, dass ich mich mit HTTP-Antworten befasse.
Danke für Ihre Hilfe
Neue Zeile ist nicht immer CR LF. Ich kann mich nicht erinnern, aber Referenzen einchecken. –
@JacekCz Ich habe mehrere Websites überprüft und sie alle sagen, es ist eine CRLF – Bl4ckb0ne