2012-11-27 6 views
6

CORS(クロスドメイン要求)用の適切なテストスイートを設定するには、スクリプトから直接HTTP OPTIONSメソッドを処理できる必要があります。したがって、私はOPTIONSメソッドを検出し、それに応じていくつかの特定のヘッダを出力する簡単なPHPスクリプトを持っています。PHPがOPTIONS HTTPリクエストを処理できるようにApacheを設定するには?

PHP側は問題ありません。 GET/POST/HEAD/PUT /などを発行するためにカールを使用する場合。彼らはすべてスクリプトに行き、彼らは明らかにそれをうまく処理します。しかし、OPTIONSリクエストを発行した場合、スクリプトには到達しません。Apacheは、このリソースに適していると考えられるメソッドのセットをすぐに返信します。私は、スクリプトが実行されていないことを知ることができます(ロギングなし、レスポンスへの出力なしなど)。

私はApacheの設定を行ってきましたが、適用可能な.htaccessが存在しないことを確認しましたが、Limit/LimitExceptディレクティブのようなものを微調整しましたが、変更することはできませんその行動。私はまた、ここで助けてくれた若者のテクニックに関する情報を見つけようとしました。NPH(非解析ヘッダー)スクリプト。しかし明らかにそれは今消えてしまった(少なくとも私はそれについての最近の情報は見つけられない)。

質問:私のスクリプトでOPTIONSを処理できるように、Apacheの設定を調整するにはどうすればよいですか?

+0

これはちょうどあなたがLIMITを持っていないか、またはOPTIONSに対して特定のハンドラを有効にしている限り、うまくいくはずです。しかし、私たちはあなたの.confファイルを見る必要があり、第二にこれはサーバーの障害に属します。移行することをお勧めしますが、その間に.confファイルを追加してください。 – Robbie

+0

私は.confをインクルードしていましたが、多くのことを行う必要がある大規模な構成です(テストには構成のばらつきがたくさんあります)。私の次のステップは、それが機能するまでそれを二等分することですが、それは小さな事業ではないので、私はそれをする前にリードを望んでいました。 –

答えて

3

私は自分のPHP(5.3、Apache 2.2)をテストしましたが、それはまだ動作しています(しばらくあります)。あなたが期待しているとおり、$ _SERVER配列に表示されます。

目的は、設定をデフォルトに戻して、必要な他のオプションを使用してバックアップを作成することです。

.confファイルが表示されていないと、私たちは盲目的に飛んでいるので、ここで調べるべき点がいくつかあります。

  1. 制限指令。あなたはそこにチェックしたと言っていますが、ただデバッグするにはすべてのリファレンスを削除してください。 vhostsとディレクトリにあるものを個別に変更することができます。 (あなたがしようとしたと述べた - ちょうどそれらすべてを削除)LimitExceptため
  2. 同じI「はRequestHeaderREQUESTHEADERに基づく任意のリダイレクトやその他の条件について
  3. チェックの.confと.htaccess両方(検索および分析ん)
  4. [ちょうどTHE_REQUESTのチェックについて何かを読んだことがありますが、これまでに聞いたことはありません。チェックする価値はありますか?]
  5. 最後に、OPTIONSに指定された特定のハンドラ(Script OPTIONS /cgi-bin/optionshandler)がないこと、PHPハンドラがGETとPOSTのみを処理するように指定されていることを確認してください。再び仮想ホストとディレクトリを覚えていて、.htaccessを個別に変更することができます。

これはすべて私が考えることができます。そうでなければ、私が示唆したように、最初から始めて(うまくいきます)、うまくいきません。

+0

古代郵便ですが、最近の問題を調査したときに私が見つけた最も有益なものです。 私の問題は、mod-php5ではなくlibapache2-mod-php5filterを実行していたことです。 (理由は分かりませんが、私はそれをずっと前にインストールしました)。 php5filterはOPTIONSをPHPに渡しません。 mod-php5に切り替えると、問題が解決しました。 – Fanjita

関連する問題