Javascript 如何将访问权限限制为仅限于ajax请求?

Javascript 如何将访问权限限制为仅限于ajax请求?,javascript,ajax,node.js,express,Javascript,Ajax,Node.js,Express,我用ajax请求加载inicio.jade $.ajax( { url:'/inicio', cache: false, type: 'GET', }).done(function(web) { $('#contenido_nav_principal').fadeOut(600,function() { $('#contenido_nav_principal').empty(); $('#contenido_nav_prin

我用ajax请求加载inicio.jade

$.ajax(
{
    url:'/inicio',
    cache: false,
    type: 'GET',
}).done(function(web)
{
    $('#contenido_nav_principal').fadeOut(600,function()
    {
        $('#contenido_nav_principal').empty();
        $('#contenido_nav_principal').html(web);
        $('#navegacion').animate({height:'600px'},200);
        $('#contenido_nav_principal').fadeIn(600);
    });
});
从服务器中的这个地址

app.get('/inicio',routes.inicio.inicio);
问题是我可以使用


如果不是ajax请求,如何将访问权限仅限于ajax请求并重定向到404错误页面

您可以覆盖
.ajax()
调用上的
beforeSend
事件。根据,您可以向请求添加自定义标题。举一个例子


然后,您可以让页面检查是否存在该自定义标题

您可以通过检查
HTTP\u X\u REQUESTED\u和
头来检测它是否是服务器端的Ajax请求。如果是Ajax请求,则带有
头的
HTTP\u X\u REQUESTED\u的值应为
XmlHttpRequest

使用expressjs,您只能响应如下xhr请求:

function handleOnlyXhr(req, res, next) {
  if (!req.xhr) return next();
  res.send({ "answer": "only is sent with xhr requests"});
}

(在您的示例中,
routes.inicio.inicio
将通过检查
req.xhr
来使用上述模式)

这将阻止临时用户,但有一些浏览器扩展允许您至少在Firefox和Chrome中添加自定义标题。@StevenBurnap所以您要说的是,如果有人被绑定并决定访问该URL,他们可以对您正在做的事情进行反向工程并访问它?真正地