3

私は ajax req で 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);

問題は、http://www.mypage.com/inicioでページにアクセスできることです。

アクセスをajaxリクエストのみに制限し、ajaxリクエストでない場合は404エラーページにリダイレクトするにはどうすればよいですか

4

3 に答える 3

9

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

于 2012-12-31T03:12:14.483 に答える
2

HTTP_X_REQUESTED_WITHヘッダーを確認することで、サーバー側でAjaxリクエストかどうかを検出できます。HTTP_X_REQUESTED_WITHヘッダーの値XmlHttpRequestは、Ajaxリクエストの場合になります。

于 2012-12-31T03:09:12.293 に答える
0

beforeSend通話中のイベントを上書きできます.ajax()。ドキュメントに従ってリクエストにカスタムヘッダーを追加できます。 この投稿は例を示しています。

次に、そのカスタムヘッダーの存在をページでチェックすることができます。

于 2012-12-31T03:07:46.613 に答える