Ich versuche eine PUT-Anfrage an eine Philips Hue-Bridge zu senden, damit ich den aktuellen Status der Lampe ändern kann. Ich mache das von einem Webserver auf meinem PC. Mit CORS habe ich bereits eine GET- und POST-Anfrage gesendet, aber wenn ich eine PUT sende, bekomme ich einen Fehler, der sagt "Methode nicht gefunden in Access-Control-Allow-Methoden". Ich bin mir ziemlich sicher, dass es keinen Sinn machen würde, nur diese Methode zu blockieren.kann PUT nicht an Philips senden Hue (selbe Ursprungsrichtlinie)
Ich verwende diesen Code, um es zu tun, es ist der gleiche wie der Code für GET und POST, nur die If-Klausel wird nicht benötigt.
var lightReq = new XMLHttpRequest();
\t \t if ("withCredentials" in lightReq) {
\t \t \t lightReq.open('PUT',stringChange,true);
\t \t \t if (value == false) {
\t \t \t \t lightReq.send("{\"on\":true}");
\t \t \t }
\t \t \t else {
\t \t \t \t lightReq.send("{\"on\":false}");
\t \t \t }
\t \t }
Vielleicht hatte jemand ein ähnliches Problem und bekam eine Lösung, oder es sind Schritte, die ich überprüfen sollten. Ich freue mich für jede Hilfe.
EDIT: Hier ist ein Screenshot der Kopfzeile, es zeigt, dass die PUT-Methode akzeptiert werden sollte.
EDIT2: Für roryhewitt hier ist das, was Sie gefragt, denke ich:
Mit besten Grüßen, Adrian
Dieser Fehler bedeutet, dass der Server (die Hue-Brücke, ich nehme an) einen 'Access-Control-Allow-Methods'-Header zurückgibt, der die" PUT "-Methode nicht enthält. Sie sollten dies über die Entwicklertools Ihres Browsers überprüfen können, wo Sie die CORS-Anfrage vor dem Flug sehen, die automatisch (vom Browser) ausgeführt wird, bevor Ihr "PUT" versucht wird. – Pointy
Der Grund dafür, dass Ihre GET- und POST-Anfragen bearbeitet wurden, ist wahrscheinlich, dass es sich um einfache Anfragen handelte, die keine benutzerdefinierten Anfragenheader enthielten und daher keine COROR-Preflight-OPTIONS-Anfrage von Ihrem Browser ausgelöst haben. PUR-Anfragen mit übergreifendem Ursprung führen jedoch immer dazu, dass Browser Preflight ausführen - was, wie @ Pointy sagt, fehlschlägt, wenn der Antwort-Header "Access-Control-Allow-Methods" nicht "PUT" enthält. – sideshowbarker
wie zu meinem Beitrag hinzugefügt, der Netzwerk-Scanner des Browsers zeigt, dass die PUT-Methode akzeptiert werden sollte. Oder bin ich fehlgeleitet? – DaPole