检查是否未通过ajax请求您的页面?

时间:2010-07-11 12:23:29

标签: php javascript ajax

我设置了一些页面,以便它们只响应ajax请求。问题是如何设置它,以便如果有人试图通过浏览器窗口发送请求,即输入它们 - 它们不会运行,并且只有在进行ajax调用时它们才会运行。页面在这里是php

6 个答案:

答案 0 :(得分:12)

没有可靠的方法来区分AJAX请求和正常请求。某些库(例如jQuery)会在请求中附加额外的X-Requested-With: XMLHttpRequest HTTP标头,但其他库可能不会。您可以使用浏览器提供的低级对象伪造AJAX请求,该对象看起来与普通请求完全相同,所以不要太依赖。

答案 1 :(得分:5)

define('XHR', (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));

如果您使用JS设置http标头(在jQuery中自动完成),请使用此常量。

答案 2 :(得分:2)

您可以检查的所有信息(标题,引荐来源等)都来自浏览器,可以伪造。

如果用户经过了正确的身份验证(例如:通过cookie +数据令牌),您不会通过浏览器窗口暴露出比正常使用ajax更多的系统。

答案 3 :(得分:2)

AJAX在浏览器窗口内完成。我想你的意思是通过在浏览器中输入一个URL来阻止人们访问它。你可以简单地使用POST。有人必须编写HTML来访问您的页面。

您还可以使用JSON发送请求,添加自定义标题等。

答案 4 :(得分:2)

如果手动(或工具)调用ajax url可以在服务器上做一些危险的事情就没有解决方案。如果出于安全原因,你需要保护处理ajax调用的代码。只允许那些不会造成伤害的人。

答案 5 :(得分:0)

这种

没有这种稳定的方法