当我同时使用POST
和GET
个请求时,$_SERVER['REQUEST_METHOD']
设置为POST。
这是为什么?是因为所有请求在任何情况下都被视为GET
吗?
这是我为此问题而提出的要求。
a = $("#AdminAddForm").serialize();
jQuery.post('index.php?test=yes', a);
在此请求之后填充$ _POST和$ _GET,并且$ _SERVER [' REQUEST_METHOD']设置为POST。
答案 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)
你正在混合这些东西:
HTTP请求 IS 是一个POST,但在PHP中,查询字符串中的内容最终会在$ _GET全局变量中结束。
您可以在HTTP POST中使用GET参数,因为HTTP协议允许将POST正文与查询字符串混合。
答案 1 :(得分:4)
当我同时使用POST和GET请求时
这是不可能的。
您可能正在发出一个在URL上有查询字符串的POST请求。
PHP将使用查询字符串中的数据填充$_GET
,但这与请求方法完全无关。这只是PHP奇怪的(错误的)命名约定之一。