区分浏览器GUI请求和AJAX请求
答
不一样。
您可以编写JavaScript,以便在请求头中留下某种标识符,但您可以使用该标识符。请参阅XHR setRequestHeader
方法。
HTTP的一个很好的用法是修改Accept
标头,然后进行正常的内容协商。然后(例如),而不是关心它是否是Ajax,你只关心一个HTML响应是否优于JSON响应。
另一个约定是使用值为XMLHttpRequest
的非标准X-Requested-With
标头。许多JavaScript库会默认将这个添加到使用XHR的任何请求中。
这两种技术都只能用于XMLHttpRequest或基于插件的Ajax。您无法为JSON-P或基于iframe的Ajax设置任意HTTP标头。
答
就服务器而言,正常请求与Javascript发起的请求之间没有特别的区别。
如果您想识别特定品牌的请求,合理的方法是传递自定义标题。
$.ajax(uri, {
beforeSend: function(xhr) {
xhr.setRequestHeader('X-YourApp-AJAX', '1');
});
假设您使用的是Apache,检查您在PHP中设置的标头是否够简单。
$headers = getallheaders();
if(isset($headers['X-YourApp-AJAX'])) {
// AJAX request
} else {
// ...
}
编辑
看起来像jQuery的,除其他外,已经通过在AJAX请求的X-Requested-With
头 - 使用优先。
http://*.com/a/2579271/1256609 – 2012-03-31 08:37:15