在PHP中检测获取请求

时间:2017-05-26 13:14:32

标签: php fetch-api

如何在PHP中检测来自Fetch API的请求? 我目前正在使用以下方法来检测AJAX请求:

Color

理想情况下,我可以以类似的方式检测获取请求。有没有人有任何技术可以做到这一点?

2 个答案:

答案 0 :(得分:3)

没有可靠的方法来区分使用Fetch API发出的请求与使用XHR或某些AJAX库发出的请求。 Fetch API不会导致发送任何唯一标头。

如果您只是想检测某个请求是否可能来自浏览器中运行的前端代码,您可以检查Origin标头。浏览器会将Origin标头添加到所有跨源GET请求中。因此,如果GET请求来自浏览器的同源,则不会Origin

浏览器会针对同源ORIGIN请求发送POST,而不仅仅是跨域POST请求。

浏览器也会针对使用XHR发出的请求发送ORIGIN,而不仅仅是来自Fetch API的请求。

因此,没有可靠的方法在服务器端检测是否使用Fetch API发出了请求。

顺便提一下,如果您正在检查X-Requested-With请求标头,那么所有要告诉您的是,请求可能是使用常见的第三方AJAX 而不是直接使用XHR或Fetch API。那是因为X-Requested-With不是标准(这就是为什么它的名字以 X- 开头)并且从不由浏览器本身发送,而是由主要库发送。

所以我想如果你看到X-Requested-With请求标头,那么至少你知道请求可能不是由代码使用任何AJAX方法发送的任何主要的图书馆,但这只意味着它也可以从curl或其他东西而不是浏览器发送。

如果您看到Origin请求标头但未看到X-Requested-With请求,那么至少您知道该请求可能是从浏览器发送但未使用主要库 - 尽管它仍有可能仍然存在可以使用curl或其他任何方式发送,是否有人手动为请求添加了Origin标头。

答案 1 :(得分:0)

添加到获取选项 标头:{'X-Requested-With':'XMLHttpRequest'}