Ich lade mein Skript auf eine Domain und sende einige Daten mit POST
und die Verwendung von Ext.Ajax.request()
an dieselbe Domain.
Irgendwie zeigen mir die Dev-Tools, dass eine OPTIONS
Anfrage fehlgeschlagen ist.
Es ist sowohl HTTP als auch nicht HTTPS. Gleicher Port, gleicher Host ... Ich weiß nicht, warum es das tut. Der Server kann solche Sachen nicht verarbeiten und daher schlägt die Anfrage fehl und das ganze System funktioniert nicht mehr.
Es ist nicht wirklich spezifisch für Ext JS - siehe diese verwandten Themen in anderen Frameworks. Es ist der Server, der den CORS Standard richtig durchsetzt:
für HTTP-Anfrage-Methoden, die Nebenwirkungen auf Benutzerdaten verursachen können (in insbesondere für andere HTTP-Methoden als GET oder für die POST-Verwendung mit bestimmte MIME-Typen), schreibt die Spezifikation diese Browser vor "Preflight" die Anfrage, ersuchte unterstützte Methoden vom Server mit einem HTTP-OPTIONS-Anfrage-Header und dann nach "Genehmigung" von der Server, sendet die eigentliche Anfrage mit der eigentlichen HTTP-Anfrage Methode.
Wenn Sie CORS verwenden möchten, müssen Sie diese Anforderungen auf dem Server entweder ordnungsgemäß behandeln oder ignorieren können. Ext JS selbst kümmert sich nicht um die OPTIONS-Anfragen - Sie erhalten die Antworten wie erwartet, aber wenn Sie nicht etwas mit ihnen machen, werden sie ignoriert (vorausgesetzt, der Server lässt tatsächlich zu, was auch immer Sie versuchen).
Wenn Sie NICHT CORS verwenden möchten (was so klingt, als würden Sie nicht absichtlich domänenübergreifend arbeiten), müssen Sie herausfinden, warum der Server die Ursprungsdomäne für unterschiedlich hält (da bin ich mir nicht sicher). Sie könnten CORS auch ganz umgehen, indem Sie JsonP (über den JsonP-Proxy von Ext) verwenden.
Verwenden Sie relative URL statt absolute, dann erhalten Sie das erwartete Ergebnis.