我正在编写自己的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
答案 0 :(得分:9)
使用jQuery,您可以使用$_SERVER['HTTP_X_REQUESTED_WITH']
,它将被设置为“XMLHttpRequest”。这是使用jQuery时最可靠的方法。
答案 1 :(得分:3)
Colin Morelli回答了你的主要问题,但这可以帮助你进行跟进。
XMLHttpRequest是否意味着它是一个ajax调用?如何检测类型 它的XML或JSON
是。 XMLHttpRequest是发出请求的JavaScript对象。但是现在名字很差,因为你可以随心所欲地发送它。要回答第二个问题,您必须对收到的有效负载进行某种解析尝试。您可以扫描XML,如果没有找到,则只假设它是JSON并尝试解析。