Ich mache domänenübergreifende Anfragen über jQuerys $.ajax
, um auf eine RESTful PHP API zuzugreifen.
Dazu habe ich in PHP folgende Header gesetzt:
Die Verwendung der Typen GET
und POST
funktioniert ohne Probleme. Aber wenn ich einen PUT
ajax Aufruf mache, scheitert Firefox komplett und zeigt OPTIONS api.php
im Netzwerk Reiter von Firebug.
In Chrome passiert das gleiche zuerst ( OPTION
-Anforderung schlägt mit der Nachricht Method PUT is not allowed by Access-Control-Allow-Methods.
fehl), Chrome folgt jedoch der tatsächlichen PUT
-Anforderung
das funktioniert dann tatsächlich.
Was ist der Grund für dieses Verhalten?
Anscheinend sendet der Browser zuerst eine Anfrage OPTIONS
, um herauszufinden, ob PUT
(oder DELETE
) Anfragen erlaubt sind.
Da ich die OPTIONS
-Methode in Access-Control-Allow-Methods
nicht erlaubt hatte, ist sie fehlgeschlagen, ebenso wie die PUT
-Anforderung nach Firefox.
Das Hinzufügen von OPTIONS
zu Access-Control-Allow-Methods
hat das Problem gelöst:
Tags und Links jquery ajax cross-domain put