ajaxドメイン間リクエストによるセッションの失効の問題の解決

2489 ワード

  • 起因:httpはステータスがないため、通常はクッキーとセッションを使用してステータスを保存する必要があります.セッションはサーバ側に格納され、クッキーと一緒に使用され、セッションが設定された後、ブラウザにクッキーが送信されます.このクッキーはセッションです.idは、再度要求するとブラウザがサーバに送信して対応するセッションを見つけます.しかし、実際に使用する場合はドメイン間で要求を開始するのが一般的ですが、デフォルトではクッキーはサービスに送信されず、セッションが失われます.idは、セッションの値がundefinedになる.解決策は以下の通りである:まず、フロントエンドページがajax要求を開始するとき、パラメータを加える:
  • withCredentials: true,

    こんな風に
    $.ajax({
        type:
        url:'http://localhost:8080/user-login',
        data:
        dataType:'JSON',//   ,         ,               
        withCredentials: true,
        success:
        error:
    })
    

    私が使っているバックグラウンド言語はnode.jsで、node.jsでcorsを使ってドメインをまたいでapp.jsに追加します(インタフェースの順序に注意してください):
    app.all('*', function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "           ,   * ");
        res.header("Access-Control-Allow-Headers", "X-Requested-With");
        res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
        res.header("X-Powered-By",' 3.2.1');
        res.header("Access-Control-Allow-Credentials",true);
        res.header("Content-Type", "application/json;charset=utf-8");
        next();
    });

    OK、バグと最後まで頑張って