2

我正在编写自己的 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',除非它是不同类型的调用,例如HTMLXML

4

2 回答 2

9

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

于 2013-07-23T17:03:39.680 回答
3

Colin Morelli 回答了您的主要问题,但这应该可以帮助您进行后续跟进。

XMLHttpRequest 意味着它是一个 ajax 调用?如果是 XML 或 JSON,我将如何检测类型

是的。XMLHttpRequest 是发出请求的 JavaScript 对象。不过,它现在的名字很糟糕,因为你可以让它发送你想要的任何东西。要回答您的第二个问题,您必须对收到的有效负载进行某种解析尝试。您可以扫描 XML,如果没有找到,就假设它是 JSON 并尝试解析。

于 2013-07-23T17:07:03.287 回答