7

CORS(クロスドメインリクエスト)用の適切なテストスイートを設定するには、スクリプトから直接HTTPOPTIONSメソッドを処理できる必要があります。したがって、OPTIONSメソッドを検出し、それに応じて特定のヘッダーを出力することで反応する単純なPHPスクリプトがあります。

PHP側は問題ではありません。curlを使用してGET/POST / HEAD / PUT/etcを発行した場合。彼ら全員がスクリプトに行くように要求し、それは明らかにそれらをうまく処理します。ただし、OPTIONSリクエストを発行しても、スクリプトに到達することはありません。Apacheは、このリソースに適していると思われる一連のメソッドのリストをすぐに返信します。スクリプトが実行されていないことがわかります(ロギングがない、その出力が応答に到達しないなど)。

私はApacheの構成を行っており、該当する.htaccessが邪魔になっていないことを確認し、Limit / LimitExceptディレクティブなどの多くのことを微調整しましたが、その動作を変更することはできません。私はまた、ここで役立つ可能性のある若い頃のテクニックに関する情報を見つけようとしました。NPH(解析されていないヘッダー)スクリプト。しかし、どうやらそれは今や消えたようです(少なくとも、私はそれについての最近の情報を見つけることができません)。

したがって、問題は、Apacheの構成を微調整して、スクリプトがOPTIONSを処理できるようにするにはどうすればよいかということです。

4

1 に答える 1

3

自分の PHP (5.3、Apache 2.2) をテストしましたが、まだ動作します (しばらくの間)。OPTIONS が送信され、期待どおりに $_SERVER 配列に表示されます

目標は、設定をデフォルトに戻して(これでうまくいくはずです)、必要な他のオプションを使用してconfを元に戻すことです。

そうしないと、.conf ファイルが表示されないため、盲目的に飛行していることになります。

  1. ディレクティブを制限します。そこをチェックしたと言っていましたが、デバッグするだけで、すべての参照を削除してください。仮想ホストに任意のものを含めるだけでなく、ディレクトリも個別に変更できます。
  2. LimitExceptについても同じです(あなたが試したと言った - それらをすべて削除するだけです)
  3. RequestHeaderまたはに基づくリダイレ​​クトまたはその他の条件について、.conf と .htaccess の両方を確認REQUESTHEADERします (検索と分析を行います)。
  4. [チェックについての記事も読んだことがありますTHE_REQUESTが、それは聞いたことがありません。もチェックする価値がありますか? ]
  5. 最後に、OPTIONS に特定のハンドラーが指定されていないこと、つまりScript OPTIONS /cgi-bin/optionshandler、PHP ハンドラーが同様に GET と POST のみを処理するように指定されていることを確認してください。vhosts とディレクトリと .htaccess は個別に変更できるので、すべて確認してください。

それは私が考えることができるすべてです。それ以外の場合は、私が提案したように、ゼロから始めて (動作します)、動作しなくなるまで他のすべてを構築します。

于 2012-11-27T20:23:45.787 に答える