在我的PHP脚本中,区分正常浏览器GUI请求和AJAX请求的最佳方式是什么?区分浏览器GUI请求和AJAX请求
2
A
回答
5
不一样。
您可以编写JavaScript,以便在请求头中留下某种标识符,但您可以使用该标识符。请参阅XHR setRequestHeader
方法。
HTTP的一个很好的用法是修改Accept
标头,然后进行正常的内容协商。然后(例如),而不是关心它是否是Ajax,你只关心一个HTML响应是否优于JSON响应。
另一个约定是使用值为XMLHttpRequest
的非标准X-Requested-With
标头。许多JavaScript库会默认将这个添加到使用XHR的任何请求中。
这两种技术都只能用于XMLHttpRequest或基于插件的Ajax。您无法为JSON-P或基于iframe的Ajax设置任意HTTP标头。
0
就服务器而言,正常请求与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
头 - 使用优先。
相关问题
- 1. AJAX请求和常规浏览器请求之间的区别
- 2. 浏览器请求和Ajax请求有什么区别?
- 3. 多个AJAX请求冻结浏览器
- 4. ajax在浏览器中导航请求
- 5. IE浏览器不加载AJAX请求
- 6. 同步Ajax请求“锁定”浏览器
- 7. 浏览器卡在ajax请求
- 8. 区分两个Ajax请求
- 9. HTTP请求的浏览器
- 10. 取消请求浏览器
- 11. 停止浏览器请求
- 12. 如何区分ajax请求和动作中的常规请求?
- 13. Java Post请求和浏览器发布请求之间的区别
- 14. 如何在php(或codeigniter)中区分ajax调用和浏览器请求?
- 15. 跨站请求和浏览器插件
- 16. 如果浏览器关闭,请执行所有ajax请求
- 17. 请建议一个库在浏览器中模拟ajax请求
- 18. 如何区分Web View或普通浏览器的请求
- 19. 如何区分来自正常Http请求的Ajax请求?
- 20. 为什么我的Ajax请求比一般的浏览器请求慢得多?
- 21. 如果JavaScript在浏览器中被禁用,请求Ajax请求是否有效?
- 22. 优化HTTP请求/浏览器限制请求?
- 23. 通过请求请求的HTML内容与浏览器不同
- 24. ajax请求和在浏览器控制台中的活动
- 25. MVC4 Ajax请求和浏览器状态丢失
- 26. 长轮询冻结浏览器和其他块Ajax请求
- 27. MongoDB GUI请求
- 28. 区分浏览器请求和移动应用程序请求的最佳方法?
- 29. 只有IE浏览器给出org.springframework.web.multipart.MultipartException:当前请求不是多部分请求
- 30. 使用settings.url来区分ajax请求
http://stackoverflow.com/a/2579271/1256609 – 2012-03-31 08:37:15