【问题标题】:How to completely ignore GET requests?如何完全忽略 GET 请求?
【发布时间】:2014-06-09 12:05:26
【问题描述】:

我有一个 php 脚本,它从我的 javascript 应用程序接收 POST 数据作为数据包并对其进行处理。

我遇到了一个问题,即向它发送 GET 请求并在运行时中断流,因为它在我的 javascript 中向我的 AJAX 发送空白响应。尽管我付出了很多努力,但我仍然无法追踪这些请求的来源,尽管它们来自我的 IP。

我怎样才能让我的脚本完全忽略 GET 请求,所以如果向它发送 GET 请求,它甚至不会启动? (如果它是我现在拥有的获取请求,则不仅仅是在开始时死掉)。

【问题讨论】:

  • 如果您只使用$_POST,那么您的问题将得到解决:)...而不是使用$_GET$_REQUEST
  • 我只在脚本中使用 POST,但 GET 请求在运行时启动脚本并干扰发送回我的 AJAX 的响应。
  • 您的脚本有其他问题,php 是一种无共享架构,一个请求不应影响另一个请求。请提供更多细节,阻止获取请求只是一个糟糕的贴子,不是解决方案
  • 如果您决定阻止获取请求,请参阅@HaukurHaf 链接的帖子 - 您在网络服务器级别阻止,而不是 php

标签: php


【解决方案1】:

如何让我的脚本完全忽略 GET 请求,如此理想 如果向它发送 GET 请求,它甚至不会启动?

如果是这样,那么您需要确保请求不是GET,然后再开始执行其他操作。

if (strtoupper($_SERVER['REQUEST_METHOD']) === 'GET') {
  exit;
}

// Now do another stuff

P.S 请小心覆盖 $_GET 和另一个超全局变量 - 这是因为第三方库可能会使用它(如果您将来包含一个)

【讨论】:

    【解决方案2】:

    您可以在脚本开头覆盖 $_GET 变量中的值:

    unset( $_GET );
    

    关于这些变量“在运行时中断流程” - 发生这种情况的唯一方法是您实际使用或解析这些参数。只需在代码中忽略它们:即 - 不要引用它。

    【讨论】:

    • 我有一个 javascript 应用程序将数据包作为 POST 数据发送到脚本。该脚本处理数据,发回响应,然后 javascript 发送下一个数据包。当脚本在处理过程中收到一个 GET 请求时,一个空白响应会返回到 AJAX 并中断整个事情,因此它不会收到来自原始 POST 数据的响应,因此它不会发送下一个数据包。我需要完全忽略 GET 请求来阻止这种情况,因为我找不到 GET 请求的来源。
    猜你喜欢
    • 2020-05-03
    • 2019-07-12
    • 2019-11-30
    • 2013-12-29
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 2021-04-15
    相关资源
    最近更新 更多