6

私はこれの解決策を自分で見つけようとしましたが、他の 406 問題の解決策は役に立ちませんでした。

Mac で PHP と Apache Web サーバーを有効にしました。Accept: ヘッダーを設定してリクエスト (POST または GET) を渡すと、406 エラーで失敗することがわかりました。

$ curl -X GET -H "Accept: application/json" http://localhost/test/tester
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /test/tester could not be found on this server.</p>
Available variants:
<ul>
<li><a href="tester.php">tester.php</a> , type application/x-httpd-php</li>
</ul>
</body></html>

ただし、「Accept: application/json」を除外すると、リクエストはエラーなしで実行されます。

この test/tester.var を (test/tester.php と同じディレクトリに) 追加してみました:

URI: tester

Content-type: application/json
URI: tester.php

私の意図は、tester.php を実行して、「Accept: application/json」でリクエストを処理するように Apache に指示することでした。しかし、それは私を助けませんでした(httpd.confファイル内の「IfModule mime_module」の下に「AddHandler type-map .var」も追加し、サーバーを再起動しました)。

「mod_security」は構成されていないようですが、次の .htaccess を test/ ディレクトリに追加しました:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

これらは、私がネット上で見つけた解決策であり、私にとってはうまくいきませんでした。

何か案は?

4

1 に答える 1

3

やっと正解がわかった!私が疑ったように、*mod_security* は私の問題とは何の関係もありませんでした。

/etc/apache2/httpd.confに加えた変更は次のとおりです。

  1. 「IfModule mime_module」セクションの「AddHandler type-map var」行のコメントを外して、型マップを有効にしました。
  2. 「IfModule mime_module」セクションに次の 2 行を追加しました。

    AddType application/x-httpd-php .php
    MultiviewsMatch Handlers Filters
    

PHP ソース ディレクトリで、tester.phpと同じディレクトリにtester.varを作成し、内容は次のとおりです。

    Content-type: application/json
    URI: tester.php

今は大丈夫です。

于 2013-09-23T03:29:52.507 に答える