Versucht man mit einer cURL oder .NET Anwendung POST Daten an einen Lighttpd 1.4 Server zu senden, bekommt man die Meldung
HTTP/1.1 417 Expectation Failed
Dies liegt daran, dass die Programme einen Expect: 100-continue Header senden, und als Antwort 100 (Continue) oder 417 Expectation Failed erwarten. Lighty kennt den Header jedoch nicht, und antwortet deswegen mit dem besagten 417 Expectation Failed.
Der Expect: 100-continue Header soll verhindern, dass Daten an den Server gesendet werden, die nicht benötigt werden. Erkennt der Server z.B. dass er die Anfrage ablehnen muss, kann er dies dem Client mitteilen, noch bevor die POST-Daten übermittelt wurden.
Wer dennoch POST-Daten an Lighty senden möchte, kann die folgenden Parameter anpassen:
.NET
System.Net.ServicePointManager.Expect100Continue = false;
cURL unter PHP
curl_setopt($objCurl, CURLOPT_HTTPHEADER, array('Expect: '));
cURL auf der Kommandozeile
curl -v -H "Expect: " -F "field=value" http://example.com/upload.php
Alternativ aktualisiert man auf Lighttpd 1.5. Dieser kennt den Expect: 100-continue Header und beantwortet entsprechende Anfragen korrekt.
Browser senden übrigens keinen Expect: 100-continue Header.


