2012-11-27 2 views
6

Um eine richtige Testsuite für CORS (domänenübergreifende Anfragen) einzurichten, muss ich in der Lage sein, die HTTP OPTIONS-Methode direkt aus dem Skript zu bedienen. Ich habe daher ein einfaches PHP-Skript, das die OPTIONS-Methode erkennt und entsprechend reagiert, indem es einige spezifische Header ausgibt.Wie konfiguriert man Apache, damit PHP OPTIONS-HTTP-Anfragen verarbeiten kann?

Die PHP-Seite ist kein Problem. Wenn ich curl verwende, um GET/POST/HEAD/PUT/etc. Bitten sie alle um das Skript und es behandelt sie klar gut. Wenn ich jedoch eine OPTIONS-Anfrage erstelle, erreicht sie niemals das Skript: Apache gibt sofort eine Liste von Methoden zurück, die ihrer Meinung nach für diese Ressource geeignet sind. Ich kann sagen, dass das Skript nicht ausgeführt wird (keine Protokollierung, keine seiner Ausgaben macht es zur Antwort, etc.).

Ich habe die Apache-Konfiguration durchlaufen, habe sichergestellt, dass kein anwendbares .htaccess im Weg ist, ich habe eine Menge Dinge wie Limit/LimitExcept Direktiven optimiert, aber ich kann es nicht ändern sein Verhalten. Ich habe auch versucht, Informationen über eine Technik aus meiner Jugend zu finden, die hier hätten helfen können: NPH-Skripte (nicht geparste Header); aber anscheinend ist das jetzt verschwunden (zumindest kann ich keine neuen Informationen darüber finden, die funktionieren).

Die Frage ist also: Wie optimiere ich die Konfiguration von Apache, damit mein Skript mit OPTIONS umgehen kann?

+0

Dies sollte nur funktionieren - solange Sie kein LIMIT haben oder einen speziellen Handler für OPTIONS aktiviert haben. Aber a) wir müssten Ihre .conf-Datei sehen, und zweitens gehört dies zu einem Serverfehler. Wird vorschlagen, es zu migrieren, aber hinzufügen .conf-Datei in der Zwischenzeit. – Robbie

+0

Ich hätte die .conf hinzugefügt, aber es ist eine weitläufige Konfiguration, die eine Menge Dinge tun muss (eine Menge Konfigurationsvarianz ist zum Testen erforderlich). Mein nächster Schritt ist, das zu halbieren, bis es funktioniert, aber ich habe auf Leads gehofft, bevor ich dazu muss, da es kein kleines Unternehmen ist. –

Antwort

3

Ich habe gerade meine eigene PHP (5.3, Apache 2.2) getestet und es funktioniert immer noch (wie es seit einer Weile). OPTIONEN werden gesendet und erscheinen im $ _SERVER Array wie erwartet

Das Ziel sollte es sein, die Einstellungen zurück auf den Standard (was funktionieren sollte) zu drehen, dann bauen Sie Ihre Conf-Backup mit den anderen Optionen, die Sie benötigen.

Ansonsten, ohne die .conf-Datei zu sehen, fliegen wir blind - also hier sind einige Dinge zu suchen.

  1. Beschränkungsrichtlinien. Du hast gesagt, du hast dort nachgesehen, aber nur um zu debuggen, entferne alle Referenzen. Include any in vhosts sowie Verzeichnisse können individuell geändert werden.
  2. Das Gleiche gilt für LimitExcept (Sie sagten, Sie versucht - entfernen Sie sie einfach alle)
  3. prüfen sowohl Conf und .htaccess für alle Umleitungen oder andere Bedingungen basierend auf RequestHeader oder REQUESTHEADER (Suche starten und analysieren)
  4. [I‘ Ich habe auch gerade etwas gelesen über das Überprüfen auf THE_REQUEST aber noch nie zuvor gehört. Prüfen Sie auch?
  5. Schließlich überprüfen Sie, dass Sie nicht einen bestimmten Handler für OPTIONS, d. H. Script OPTIONS /cgi-bin/optionshandler angegeben haben und dass Ihr PHP-Handler ebenfalls angegeben ist, nur GET und POST zu behandeln. Denken Sie wieder an vhosts und Verzeichnisse und .htaccess kann individuell geändert werden, also überprüfen Sie sie alle.

Das ist alles, woran ich denken kann. Ansonsten, wie ich vorgeschlagen habe, von vorne anfangen (es funktioniert) und alles andere aufbauen, bis es nicht funktioniert.

+0

Ein alter Beitrag, aber es ist der informativste, den ich bei der Untersuchung eines neuen Problems fand. Am Ende war mein Problem, dass ich libapache2-mod-php5filter statt mod-php5 lief. (Keine Ahnung warum, ich habe das vor langer Zeit installiert). Der php5filter gibt OPTIONS nicht an PHP weiter. Der Wechsel zu mod-php5 hat das Problem für mich behoben. – Fanjita

Verwandte Themen