检测ajax请求

时间:2013-07-23 17:02:04

标签: php jquery ajax json

我正在编写自己的MVC框架来练习,我有一个Request类。我想捕获请求的类型并相应地解析数据,无论是AJAX / JSON调用还是HTML / XML请求。

我目前正在使用:

$_SERVER['HTTP_ACCEPT']

及以上使用var_dump时,返回 application / json

$.ajax({
    type: 'post',
    url: 'index',
    dataType: 'json',
    data: {
       _method: 'put'
    }
});

var_dump($ _ SERVER ['HTTP_ACCEPT'])返回:

string(46) "application/json, text/javascript, */*; q=0.01"

问题:     这种方法可靠吗?它总是有效吗?检测这样的ajax调用是否有任何安全问题?

请注意,我框架中的所有ajax调用都必须包含 dataType:'json',除非它的调用类型不同,如 HTML XML

2 个答案:

答案 0 :(得分:9)

使用jQuery,您可以使用$_SERVER['HTTP_X_REQUESTED_WITH'],它将被设置为“XMLHttpRequest”。这是使用jQuery时最可靠的方法。

答案 1 :(得分:3)

Colin Morelli回答了你的主要问题,但这可以帮助你进行跟进。

  

XMLHttpRequest是否意味着它是一个ajax调用?如何检测类型   它的XML或JSON

是。 XMLHttpRequest是发出请求的JavaScript对象。但是现在名字很差,因为你可以随心所欲地发送它。要回答第二个问题,您必须对收到的有效负载进行某种解析尝试。您可以扫描XML,如果没有找到,则只假设它是JSON并尝试解析。