【问题标题】:How to know whether request has come via jQuery $.ajax()如何知道请求是否来自 jQuery $.ajax()
【发布时间】:2013-05-08 15:14:43
【问题描述】:

我想确定是否从 jQuery $.ajax() 方法发出了对我的 REST API 的请求。

在回答这个问题之前,我不想这样做...... p>

显然可以这样实现:

$.ajax({
    data: {
         sentViaAjax: 'true'
    }
});

但是,出于各种原因,我希望布尔/附加标头对代码保持隐藏。

因此,我想知道的是,当 jQuery 发出请求时,它是否会以任何特定形式向服务器发送任何其他数据?

我尝试打印出$_REQUEST 数组,但它不包含我发送的数据以外的任何内容。是否有任何独特的标题需要注意?如果是这样,它们是否可靠,例如,它们会一直存在吗?

【问题讨论】:

  • $_SERVER['HTTP_X_REQUESTED_WITH']?
  • @zerkms 这听起来像是我正在寻找的东西!我可以依靠它吗?是否在所有浏览器(现代浏览器)中发送?
  • @Sudhir 我已经看过那个问题了!它指的是codeigniter,所以与此无关!
  • @Ben Carey:查看已检查的答案 - 它与 CI 无关

标签: php jquery ajax


【解决方案1】:

jQuery 在非跨域ajax 请求上发送以下标头:

X-Requested-With: XMLHttpRequest

因此您可以在请求中查找该标头。

【讨论】:

  • @Alnitak:你应该,我愿意。确保您查看的是 request 标头,而不是响应标头。
  • 它不在 Chrome 开发工具的网络监视器部分列出的请求标头中。我还没有看到服务器本身接收到什么。
  • 你这个人@T.J.Crowder。会在应用程序中依赖它吗?
  • @Ben Carey:您不应依赖任何客户信息。在这种情况下,此类标头的存在意味着“很可能已使用 AJAX 发送请求”
  • @BenCarey:我会尽量避免关心请求是如何生成的。请注意,如果有人愿意,他们可以修改 jQuery 以不发送标头,或者直接使用 XMLHttpRequest,或者使用甚至不是浏览器一部分的工具来发送完全自定义的请求...
猜你喜欢
  • 2017-06-16
  • 2014-05-06
  • 2010-12-21
  • 2017-06-26
  • 2011-04-21
  • 2013-07-13
  • 2012-04-15
  • 2016-09-08
  • 1970-01-01
相关资源
最近更新 更多