Frontend bereaksi dan meminta ke server menggunakan Fetch .

Kode seperti ini.

        fetch(`/ONETOWN/LARK/PACKAGE/STOCKOUT/LOAD_LIST_BY_TELL`,{
        method: "POST",
        headers: {
          "Accept": "application/json",
          "Content-Type": "application/json",
        },
        credentials: 'include',
        body: JSON.stringify(info)
      })

Kode backend (server) seperti ini, cookie kedaluwarsa, jadi saya harap dialihkan ke halaman yang tidak sah.

    static authentication(req,res) {
    if(this.verifyCookie(req,res)) {
        return true;
    }   
    //res.status(401).end();

    res.redirect('/#/page/unauthorized');

    return false;
} 

Web saya tidak dialihkan ke jalur yang saya inginkan, masih tetap di halaman aslinya

Jika Redirect ubah ke metode Lokasi res.location('/#/page/unauthorized').end()

Mendapat tanggapan 200

mendapat tanggapan 200

0
will 11 Mei 2021, 16:40

2 jawaban

Jawaban Terbaik

Masalahnya adalah Anda menggunakan panggilan fetch untuk melakukan panggilan HTTP, jadi browser Anda tidak membuat permintaan, jadi browser tidak tahu apa-apa bahwa ia perlu membuka halaman lain.

Solusinya adalah memeriksa respons panggilan fetch Anda dan melakukan pengalihan ke halaman lain jika diperlukan.

0
Ayzrian 11 Mei 2021, 14:23

Terima kasih @Ayzrian, saya telah mengubah logika kode saya untuk memperbaiki masalah ini. Anda benar, saya harus melakukan pengalihan di frontend, periksa status respons server(401), kode seperti ini.

enter code here
fetch(`url`,{
     method: "POST",
        headers: {
          "Accept": "application/json",
          "Content-Type": "application/json",
        },
        credentials: 'include',
        body: JSON.stringify(info)
      })
    .then(res => Authentication(res))
    .then(res => res.json())
    .then(json => {

    }).catch((e) => {
        if (e.status === 401) {
            console.log(e);
            window.location="#/page/unauthorized";
        }
    });
};

........................

    export const Authentication  = (res) => {
  if (res.ok) {
      return res;
  } else {
      return Promise.reject({
        status: res.status,
        statusText: res.statusText
      });
  }
}

................

static authentication(req,res) {
    if(this.verifyCookie(req,res)) {
        return true;
    }   
    res.status(401).end();
    //res.redirect('/#/page/unauthorized');  not works 

    return false;
}
0
will 12 Mei 2021, 01:36