繁体   English   中英

指定Accept:标头时,Apache 406不可接受

[英]Apache 406 Not Acceptable when specifying Accept: header

我试图自己找到一种解决方案,但其他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>

这些是我在网上找不到的解决方案,对我没有用。

有任何想法吗?

我终于想出了解决办法! 正如我所怀疑的那样,* mod_security *与我的问题无关。

这是我对/etc/apache2/httpd.conf所做的更改:

  1. 通过取消注释“ IfModule mime_module”部分中的“ AddHandler type-map var”行,可以启用已启用的类型映射。
  2. 在“ IfModule mime_module”部分中添加了以下两行:

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

在我的PHP源目录中,我在与tester.php相同的目录中创建了一个tester.var ,其内容为:

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

现在一切都很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM