2016-09-22 1 views
0

Welche Regeln gelten für den Empfang einer HTTP 1.1-Anforderung? Ich habe versucht, mehrere Informationsquellen zu betrachten, aber ich kann nie zu einem schlüssigen Ergebnis kommen. Insbesondere bin ich daran interessiert herauszufinden, wie man mit dem Hauptteil der POST-Anfrage umgehen soll. Ich erstelle gerade meinen eigenen Webdienst, der weder PHP noch ASP.net verwendet. Meine Website behandelt derzeit Get Requests und den POST-Header in Ordnung, erhält aber niemals die Body-Daten vom Client/Web-Browser. Deshalb möchte ich herausfinden, ob es spezielle Regeln für den Erhalt des Body eines POST gibt.Empfangen einer HTTP-POST-Anforderung

Hope you

Dank helfen kann, Mitchell

+0

'Ich erstelle derzeit meinen eigenen Webdienst, der weder PHP noch ASP verwendet.net 'Was benutzt es :) –

+0

Derzeit C# verwenden und einen TCP-Listener und Streams verwenden. Es ist für ein Schulprojekt und meine Ressourcen sind begrenzt ... –

+0

Warum verwenden Sie nicht [HttpListener] (https://msdn.microsoft.com/en-us/library/system.net.httplistener (v = vs.110) .aspx), zB –

Antwort

1

Es gibt keine besonderen Regeln für eine POST-Handling, außer, dass der Absender es Ihnen geben muss in einem Format, du bist erwartet. Insbesondere können Sie ausflippen, wenn die POST-Anfrage in einem Format eingeht, das nicht in der Kopfzeile "ACCEPT" der Anfrage steht. Ich bin mir nicht sicher, wie du das machst, aber das ist das häufigste Problem, das ich erlebt habe. Beispiel ACCEPTs sind text/plain, text/json, etc. Sie können dies bei https://en.wikipedia.org/wiki/List_of_HTTP_header_fields etwas nachlesen, das über den allgemeinen Satz gehen wird. Vergessen Sie nicht, dass Sie die Möglichkeit haben, Ihre eigenen zu implementieren, wenn Sie das wirklich wollen, was für Dinge wie API-Schlüssel großartig ist (obwohl die Verwendung eines etablierten Standards als Best Practice gilt).

Ebenso können Sie mit Cross-Origin Request-Einschränkungen in Konflikt geraten. CORS wird einen Client davon abhalten, Anfragen von einer anderen Domäne zu empfangen, normalerweise um den Benutzer vor Very Bad Things (TM) zu schützen, die passieren können.

Obwohl dies der Vorteil der Verwendung von PHP und ASP.NET ist, wird eine Menge der Seltsamkeit, die mit HTTP-Anforderungen einhergeht, für Sie von der Sprache (PHP) oder dem Framework (ASP.NET) behandelt kann sagen, dass ASP.NET ein ausgezeichneter Gatekeeper für fehlerhafte Anfragen ist.

+0

DANKE !!! Ich benutze C# Netzwerk-Stream, um den Header und den Body zu erhalten. Warten auf ein bisschen, bevor ich die Antwort akzeptiere, aber diese hat es: P –

1

Ich stolperte über diese Frage, da ich auch keinen HTML-POST-Text empfangen konnte. In meinem Fall wollte ich eine Datei von einer Form wie folgt erhalten:

<form action="http://localhost:8000/" method="post" enctype="multipart/form-data"> 
    <input type="file" /> 
    <input type="submit" value="OK" /> 
</form> 

Für Debug-Zwecke, begann ich

nc -l localhost 8000 

, um die Anforderung zu empfangen und anzuzeigen, wie in What does enctype='multipart/form-data' mean? beschrieben.

Der aufmerksame Leser könnte bemerken, dass der type="file" Eingang das name Attribut fehlt. Als Ergebnis verwendet die Browser I, nämlich

  • Mozilla Firefox 53.0
  • Google Chrome 58.0.3029.96

, leise nicht die Dateidaten in der POST-Anfrage Körper aufzunehmen. Das Feld Inhaltslänge spiegelt dies wider. Aber netcat auf der Empfängerseite analysiert natürlich nicht das Feld. Dadurch halten beide Parteien die Verbindung einfach offen.

Hinweis: Diese Frage schien für meine Ergebnisse angemessen. @mitchell-nurseys andere Frage Web Browser not sending Body of POST request until cancel of request sieht aus wie ein "teilweise gefüllter Puffer nicht gelesen nach Trennung" -Fehler.

Verwandte Themen