我正在使用一些PHP页面做一些AJAX的东西,但我不希望它们可以直接访问.Facebook做了类似的事情,例如:domain.com/ajax/my_ajax_form.php
如果我要使用AJAX加载该页面它可以正常工作,但如果用户尝试通过键入该URL直接加载文件,它将通过错误进行,例如,
if( IS FILE LOADED DIRECT? )
{
header ( HTTP/1.0 404 );
}
Run Code Online (Sandbox Code Playgroud)
您可以查找HTTP_X_REQUESTED_WITH标题.
$is_ajax = array_key_exists('HTTP_X_REQUESTED_WITH', $_SERVER)
&& $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest';
if (! $is_ajax) {
die('go away.');
}
Run Code Online (Sandbox Code Playgroud)
但请注意,它不是标准的,但需要在请求方明确设置.AFAIK,至少jQuery和Mootools设置了它,可能大多数其他设置它,但不要相信我的话.
这是不可能的.你不能依赖$_SERVER['HTTP_X_REQUESTED_WITH'],即使你可以,也无所谓.任何人都可以通过POST或发送与浏览器相同的请求GET.
您应该做的是验证请求,如果有效则返回正确的结果.如果它无效,请不要返回404.(浏览器可以缓存404之类的错误.如果您的客户端代码出现问题,后续请求可能会失败!)如果请求无效,则返回某种错误.
同样,不可能保证这样的东西.您应该验证会话并请求数据.就这样.
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |