我试图自己找到解决方案,但其他 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>
但是,如果我排除“接受:应用程序/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>
这些是我在网上找到的解决方案,没有一个对我有用。
有任何想法吗?