Как передать заголовок в запрос на получение? - PullRequest
0 голосов
/ 17 апреля 2020

Я изучаю веб-разработчика, и я хотел бы передать заголовок "авторизации", когда запрос маршрутизации выполняется по маршруту "/".

index. js:

app.get("/", function (req, res) {
  res.render("algoritmika", {logged: VefiryLogin(req)}); 
});

Метод «VerifyLogin» ожидает запрос с заголовком «authorization», который не передается в обвиулсы. Я использую Ajax для отправки запросов, но я не знаю, как передать заголовок с запросом get .

Если я напишу собственный Ajax запрос на получение маршрута "/" и передам заголовки, "app.get" сработает дважды, поэтому страница не будет правильно отображена.

РЕДАКТИРОВАТЬ: Ajax код:

    $.ajax({
        url: "/",
        type: "GET",
        headers: {"authorization": localStorage.getItem('token')},
        success: function() { ... }
     });

РЕДАКТИРОВАТЬ 2: больше кода и что я пытаюсь сделать (как я уже сказал, я новичок в этом, поэтому я не знаю, если это правильный путь):

Validate. js - обрабатывает формы входа и регистрации на странице.

$(document).ready(function () {
    $.ajax({
        url: "/",
        type: "GET",
        headers: {"authorization": localStorage.getItem('token')},
        success: function() { alert('Success!' + authHeader); }
     });

  $("#prijava").validate({
    rules: {
      email: {
        required: true,
        email: true,
      },
      password: {
        required: true,
      },
    },
    messages: {
      email: {
        required: "Vnesite email",
        email: "Vnesite pravilni email",
      },
      password: {
        required: "Vnesite geslo",
      },
    },
    submitHandler: function (form) {
      $.ajax({
        type: "POST",
        url: "/prijava",
        data: $(form).serialize(),
        success: function (token) {
          $(form).html("<div id='message'>Prijava uspela</div>");
          localStorage.setItem("token", token);
          setTimeout(function () {
            location.reload();
          }, 0001);
        },
        statusCode: {
          500: function (data) {
            console.log(data.responseJSON);
            if (!$("#message").length) {
              $(form).append(
                "<div class='text-center' id='message'>" +
                  data.responseJSON.error +
                  "</div>"
              );
            }
          },
        },
      });
      return false;
    },
  });
  $("#registration").validate({
    rules: {
      email: {
        required: true,
        email: true,
      },
      password: {
        required: true,
        minlength: 8,
      },
    },
    messages: {
      email: {
        required: "Vnesite email",
        email: "Vnesite pravilni email",
      },
      password: {
        required: "Vnesite geslo",
        minlength: "Vnesite vsaj 8 znakov",
      },
    },
    submitHandler: function (form) {
      console.log($(form).serialize());
      console.log(form);
      console.log(JSON.stringify($(form).serialize()));
      $.ajax({
        type: "POST",
        url: "/registracija",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        dataType: "json",
        data: $(form).serialize(),
        success: function (data) {
          $(form).html("<div >Registracija uspela!</div>");
          setTimeout(function () {
            location.reload();
          }, 0001);
        },
        statusCode: {
          500: function (data) {
            console.log(data.responseJSON);
            if (!$("#message2").length) {
              $(form).append(
                "<div class='text-center' id='message2'>" +
                  data.responseJSON.error +
                  "</div>"
              );
            }
          },
        },
      });
      return false;
    },
  });
});

start. js: блокирует запуск пользователя, если они не вошли в систему.

$(document).ready(function () {
    $("#startButton").on("click", function btnClick() {
      $.ajax({
        method: "GET",
        url: "/start",
        headers: {"authorization": localStorage.getItem('token')},
        success: function (data) {

          if(data == false){
            $("#modalPrijava").modal("show")
          }
          else if(data == true){
            window.location.href = "/bubblesort";  
          }


        },
        fail: function (err) {
           console.log(err)


        }
      });
    });
  });

Больше индекса. js - обрабатывает проверку входа в систему.

app.get("/start", function (req, res) {
    VefiryLogin(req,res);
});

function VefiryLogin(req,res = null){


  return jwt.verify(req.headers["authorization"], SECRET_PW, function (
    err,
    decoded
  ) {
    if (err) {
      console.log("error - not logged");
      console.log(err);
      SendIfNotNull(res,false);
      return false;
    } else {
      console.log("no error");
      console.log(decoded._id);
      user = userModel.findById(decoded._id);

      if (user) {
        SendIfNotNull(res,true);
        return true;

      } else {
        console.log("no user with this id");
        SendIfNotNull(res,false);
        return false;
      }
    }
  });
}

function SendIfNotNull(res,value){
  if(res != null){
    res.send(value);
  }
}

algoritmika.e js - отображает различный материал, если вы вошли в систему или нет


                            <% if(logged === false){ %>
                                ...
                            <% } else if(logged === true){ %>
                                ...
                            <% } %>  
...