Я попытался найти решение для этого сам, но решения других 406 проблем мне не помогли.
Я включил PHP и веб-сервер Apache на своем Mac. Я обнаружил, что если я передаю запрос (POST или GET) с набором заголовков Accept, то он не с ошибкой 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», запрос выполняется без ошибок.
Я попытался добавить этот тест / tester.var (в том же каталоге, что и test / tester.php):
URI: tester Content-type: application/json URI: tester.php
Мое намерение заключалось в том, чтобы заставить Apache обрабатывать запрос с помощью «Accept: application / json», выполнив tester.php. Но это мне не помогло (я также добавил «AddHandler type-map .var» в разделе «IfModule mime_module» внутри моего файла httpd.conf и перезапустил сервер).
«mod_security», похоже, не настроен, но я добавил следующий .htaccess в мой каталог test /:
<IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule>
Это решения, которые я нашел в сети, ни для кого не работали.
Есть идеи?
Я, наконец, понял, что исправить! Как я и предполагал, * mod_security * не имеет ничего общего с моей проблемой.
Вот изменения, которые я сделал для /etc/apache2/httpd.conf :
Добавлены следующие две строки в раздел «IfModule mime_module»:
AddType application/x-httpd-php .php MultiviewsMatch Handlers Filters
В моем исходном каталоге PHP я создал tester.var в том же каталоге, что и tester.php, с содержимым:
Content-type: application/json URI: tester.php
Теперь все хорошо.