禁用某些页面的 HTTP GET php

Posted

技术标签:

【中文标题】禁用某些页面的 HTTP GET php【英文标题】:Disable HTTP GET for some pages php 【发布时间】:2012-06-06 11:32:59 【问题描述】:

我想为我网站中的一些 php 页面禁用 HTTP GET 方法。我可以用php代码来做吗?

假设我有两个页面 a.htmlaction.php。现在a.html是正常的页面,可以用任何方法访问,并将信息提交给action.php。但是我希望提交到action.php的信息只能通过post方法提交。

【问题讨论】:

【参考方案1】:

发送一个 Method Not Allowed 标题以及一些解释性文本(最好是比我下面的示例更友好、更有用的东西)。

之后退出,这样您就不会继续处理常规页面。

if ($_SERVER['REQUEST_METHOD'] === 'GET') 
  header('Method Not Allowed', true, 405);
  echo "GET method requests are not accepted for this resource";
  exit;

您可能需要考虑将 GET 列入黑名单(并测试是否存在您确实接受的方法)而不是黑名单。 (因为您可能也不想要 PUT、DELETE 等)。

【讨论】:

【参考方案2】:

把下面的代码放在开头。

if ($_SERVER['REQUEST_METHOD'] !== 'POST') 
  header('Location: a.html');
  exit;

【讨论】:

【参考方案3】:

你可以读取当前的方法,如果是GET的话可以重定向用户。

【讨论】:

以上是关于禁用某些页面的 HTTP GET php的主要内容,如果未能解决你的问题,请参考以下文章

如何在整个站点中禁用 http 缓存?

禁用某些图像的缓存

当 file_get_contents 和 always_populate_raw_post_data 被禁用时,php://input 和 $HTTP_RAW_POST_DATA 的替代方案是啥

windows iis 禁用除了GET和POST之外的请求方法

您可以禁用 WordPress 上某些页面的响应式布局吗?

apache_conf 在某些WordPress目录中禁用PHP执行