我自己试图找到解决方案,但解决其他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指导Apache使用“Accept:application / json”来处理请求。但它没有帮助我(我还在我的httpd.conf文件中的'IfModule mime_module'下添加了'AddHandler type-map .var'并重新启动了服务器。)
'mod_security'似乎没有配置,但我将以下.htaccess添加到我的test /目录中:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
这些我在网上找到的解决方案都没有对我有用。
有什么想法吗?
答案 0 :(得分:2)
我终于找到了解决办法!我怀疑,* mod_security *与我的问题无关。
以下是我对 /etc/apache2/httpd.conf 所做的更改:
在“IfModule mime_module”部分添加以下两行:
AddType application/x-httpd-php .php
MultiviewsMatch Handlers Filters
在我的PHP源目录中,我在 tester.php 所在的目录中创建了一个 tester.var ,内容为:
Content-type: application/json
URI: tester.php
现在一切都很好。