Ich arbeite an einer PHP-Webapp, die große POSTed Dateiuploads von bestimmten Clients akzeptiert und möchte diese Uploads (basierend auf verschiedenen Headern und anderen Faktoren, nicht nur Größe) akzeptieren oder ablehnen, bevor die Datei mit HTTP/1.1 100 Continue hochgeladen wird.
Einige kurze Hintergrundinformationen aus HTTP/1.1 spec 8.2.3 :
Der Zweck des Status 100 (Continue) (siehe Abschnitt 10.1.1) besteht darin, einem Client, der eine Anforderungsnachricht mit einem Anforderungsrumpf sendet, die Möglichkeit zu geben, festzustellen, ob der Ursprungsserver bereit ist, die Anforderung (auf der Grundlage der Anforderungs-Header) zu akzeptieren, bevor der Client den Anforderungsrumpf sendet. In einigen Fällen könnte es für den Client entweder unangemessen oder höchst ineffizient sein, den Body zu senden, wenn der Server die Nachricht ablehnt, ohne sich den Body anzusehen.
Das Problem ist, dass der Apache das Expect: 100-continue vom Client sieht, ein 100 Continue zurückgibt und den Dateiupload akzeptiert, bevor PHP mit der Verarbeitung beginnt... Ich möchte jedoch, dass PHP sofort nach dem Expect: 100-continue mit der Verarbeitung beginnt. Ich bin mir nicht sicher, ob das möglich ist, daher habe ich zwei Fragen:
- Ist es möglich, PHP dazu zu bringen, sofort nach dem Expect: 100-continue mit der Verarbeitung zu beginnen?
- Wenn nicht, was ist eine gute Alternative?
Ich denke derzeit darüber nach, 100 continue zu emulieren, indem ich vorschreibe, dass der Client zunächst eine HEAD-Anfrage mit denselben Kopfzeilen wie die POST-Anfrage sendet. Die Webapplikation kann dann eine Antwort zurückgeben, um mit dem POST fortzufahren, oder einen Fehlercode. Andere Vorschläge sind willkommen!