我读了检查ajax请求的X-Requested-With标头是确保请求不是来自外部的好方法。在服务器端,我该如何检查这个头文件?什么是正确的方式来反应这个标题丢失或错误(重定向,抛出异常,否则)?服务器如何可以检查不是来自站点的Ajax请求,X请求 - 与
5
A
回答
8
你可以检查它像这样...
$isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
如果你是只通过XHR期待访问,那么就exit
如果这个头不存在。
注意:这个头是微不足道的恶搞。除了之外,不要只依赖这个,它看起来像是来自na XHR。
6
确保请求来自您的网站而不是其他人的唯一可靠方法是向用户发出唯一令牌并将其存储在他们的会话中。在您的代码中,您发出AJAX请求后,您需要将此令牌传回,如果它与会话中的令牌相匹配,则可以确保请求来自您的网站。
更多信息: http://en.wikipedia.org/wiki/Cross-site_request_forgery
相关问题
- 1. 如何检查来自同一服务器或不同服务器的请求?
- 2. 如何检查请求来自内部服务器
- 3. 请求:检查代理服务器是否被用来制作HTTP请求
- 4. 检查Ajax请求
- 5. 来自ajax请求的链接不通过ajax请求
- 6. 如何查看来自服务器的用户请求?
- 7. 跨站点AJAX请求
- 8. Symfony2 - 检查服务器请求
- 9. 如何区分来自正常Http请求的Ajax请求?
- 10. ajax请求的Java服务器
- 11. 如何检查cakephp中的Ajax请求?
- 12. 如何可靠地检查对我的服务文件的请求是否来自我的网站?
- 13. 用yeoman服务器St出ajax请求
- 14. 如何检查是否AJAX请求是由浏览器
- 15. 服务器端Java处理Ajax请求
- 16. 使用tomcat我可以检查我的HTTP请求是否是对我的Web服务有效的请求?
- 17. 如何在codeigniter中检查请求是POST还是GET请求?
- 18. 如何获取请求来自的服务器的IP地址?
- 19. Ajax和jQuery请求到服务器端
- 20. 用java服务器捕捉ajax请求
- 21. Ajax请求 - 从当前服务器
- 22. 服务器端事件和Ajax请求
- 23. AJAX可以从远程服务器请求数据吗?
- 24. 检查对可靠服务器的HTTP请求
- 25. 如何识别http请求是来自浏览器还是来自代理服务器(或服务器)?
- 26. 我应该检查Ajax请求或不
- 27. Ajax请求究竟是什么?它与Servlet请求不同吗?
- 28. 节点服务器未响应请求
- 29. 请求LDAP的问题:服务器不愿意处理请求
- 30. 跨站点请求
你可能想看看http://stackoverflow.com/questions/623299/can-the-x-requested-with-http-header-be-spoofed;它表明`X-Requested-With`可以被欺骗。 – 2011-02-08 04:06:24
你也想看到这个http://www.yiiframework.com/forum/index.php?/topic/4945-yiiapp-request-isajaxrequest/ – 2012-09-20 03:40:43