Wie kann ich verhindern, dass cURL 100 Continue verwendet?
Kurz gesagt, ich habe eine AJAX-Anwendung, die MVC Web API als Back-End verwendet. Der Client ruft jedoch von einer anderen Domäne aus an und verwendet eine PHP-Proxy-Datei, um domänenübergreifende Anforderungsprobleme zu umgehen.
Bei Verwendung des PHP-Proxys antwortet die Web-API jedoch auf bestimmte Anforderungen mit einem100 Continue
Der HTTP-Header und alle Anfragen, die diesen zurückerhalten, benötigen zu viel Zeit (wir sprechen von ungefähr 2 Minuten) und können auch eine ungültige Antwort zurückgeben.
Diesescheint ein bekanntes Problem mit cURL zu sein und die Problemumgehung wird allgemein als Einfügen der folgenden Zeile zum Entfernen des Expect: 100-Headers in der cURL-Anforderung bezeichnet
Leider scheint mir die Lösung schwer zu fallen:
$headers = getallheaders();
$headers_new = "";
foreach($headers as $title => $body) {
$headers_new[] = $title.": ".$body;
}
//$headers_new[] = 'Expect:';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_new);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:') );
Dieser Code funktioniert, entfernt jedoch alle anderen Header (was für mich nicht funktioniert, da ich HTTP Basic Auth-Header verwende, um mich bei der API zu authentifizieren). Möglicherweise bemerken Sie auch, dass ich versucht habe, dieExpect:
zu den vorhandenen Headern, aber das hat mir auch nicht geholfen.
Wie kann ich die vorhandenen Header pflegen, aber auch verhindern, dass cURL eine Fortsetzung von 100 erwartet?