Apache 将POST请求视为由服务器获取

Apache 将POST请求视为由服务器获取,apache,rest,httpverbs,Apache,Rest,Httpverbs,这里有个很奇怪的问题。向我的PHP脚本发送post请求时 $_SERVER['REQUEST_METHOD'] 返回“GET”而不是“POST” 它适用于所有其他REST方法 这就是我得到的 GET -> GET POST-> GET PUT -> PUT DELETE -> DELETE 它只发生在我的一台服务器上,所以我假设这是apache的问题,我已经设法弄清楚,只有在我的url中添加“www”时才会发生 即 www.something.com 导致问题,但

这里有个很奇怪的问题。向我的PHP脚本发送post请求时

$_SERVER['REQUEST_METHOD'] 
返回“GET”而不是“POST”

它适用于所有其他REST方法

这就是我得到的

GET -> GET
POST-> GET
PUT -> PUT
DELETE -> DELETE
它只发生在我的一台服务器上,所以我假设这是apache的问题,我已经设法弄清楚,只有在我的url中添加“www”时才会发生

www.something.com

导致问题,但

something.com

我在同一台服务器上的不同站点上进行了测试,得到了相同的结果,所以我假设它是全局配置

任何想法

如响应代码301和302所述:

注意:由于历史原因,用户代理可能会更改请求方法 从POST到GET,用于后续请求。如果这种行为是 不希望的是,可以使用307(临时重定向)状态代码 反而

第三种可能性(但不太可能)是,您将获得对初始URI的303响应。解决方案有两个方面:

  • 将您控制的客户端配置为发送到规范URI,这样它们就不会被重定向
  • 在这种情况下,使用307而不是301/302将服务器配置为重定向
如响应代码301和302所述:

注意:由于历史原因,用户代理可能会更改请求方法 从POST到GET,用于后续请求。如果这种行为是 不希望的是,可以使用307(临时重定向)状态代码 反而

第三种可能性(但不太可能)是,您将获得对初始URI的303响应。解决方案有两个方面:

  • 将您控制的客户端配置为发送到规范URI,这样它们就不会被重定向
  • 在这种情况下,使用307而不是301/302将服务器配置为重定向

嗯。。如果窗体的操作发生,子域是什么?它们可能与当前页面的子域不同。我不确定这是否是个问题,但值得一试。它们不是子域,我尝试过的每个站点都有自己的主域。不过,感谢您的建议。尝试比较phpinfo()outputphpinfo()会得到与上面相同的结果。REQUEST_方法仍然以POST for GET请求的形式返回。“只有在我将“www”添加到我的url时才会发生这种情况。”-您是否有将这些请求重定向到非www版本的重写?重定向总是使用GET跟踪,因此此时您将丢失POST数据。嗯。。如果窗体的操作发生,子域是什么?它们可能与当前页面的子域不同。我不确定这是否是个问题,但值得一试。它们不是子域,我尝试过的每个站点都有自己的主域。不过,感谢您的建议。尝试比较phpinfo()outputphpinfo()会得到与上面相同的结果。REQUEST_方法仍然以POST for GET请求的形式返回。“只有在我将“www”添加到我的url时才会发生这种情况。”-您是否有将这些请求重定向到非www版本的重写?重定向总是使用GET进行跟踪,因此此时您可能会丢失POST数据。对了,您让我走上了正确的轨道,现在我已经修复了它。问题是我没有www.something.com作为服务器别名,我只有something.com。因此,它是转发,而不是承认它是一个合法的地址。然后你的转发问题开始出现了。谢谢对,你让我走上了正确的道路,现在我已经修好了。问题是我没有www.something.com作为服务器别名,我只有something.com。因此,它是转发,而不是承认它是一个合法的地址。然后你的转发问题开始出现了。谢谢