$ _SERVER [' REQUEST_METHOD']并同时进行POST和GET

时间:2014-09-08 15:41:36

标签: php http

当我同时使用POSTGET个请求时,$_SERVER['REQUEST_METHOD']设置为POST。

这是为什么?是因为所有请求在任何情况下都被视为GET吗?

这是我为此问题而提出的要求。

a = $("#AdminAddForm").serialize();
jQuery.post('index.php?test=yes', a);

在此请求之后填充$ _POST和$ _GET,并且$ _SERVER [' REQUEST_METHOD']设置为POST。

2 个答案:

答案 0 :(得分:5)

HTTP协议的第一行称为"请求行"。帖子看起来像这样:

POST http://website.com/route/whatever HTTP/1.1

... (post body)

请注意请求行和帖子正文之间的强制空行。

现在,当你还有一个像这样的查询字符串时:

POST http://website.com/route/whatever?q=hello HTTP/1.1

... (post body)

你正在混合这些东西:

  • 方法POST;
  • POST的正文(包含表单的内容);
  • 查询字符串。

HTTP请求 IS 是一个POST,但在PHP中,查询字符串中的内容最终会在$ _GET全局变量中结束。

您可以在HTTP POST中使用GET参数,因为HTTP协议允许将POST正文与查询字符串混合。

答案 1 :(得分:4)

  

当我同时使用POST和GET请求时

这是不可能的。

您可能正在发出一个在URL上有查询字符串的POST请求。

PHP将使用查询字符串中的数据填充$_GET,但这与请求方法完全无关。这只是PHP奇怪的(错误的)命名约定之一。