tôi ở đây ${host}/api/graphql
Có một điểm cuối graphql nhanh có thể truy cập được qua POST.
Trên tuyến đường đó, tôi có phần mềm trung gian xác thực và nếu người dùng chưa đăng nhập, tôi muốn chuyển hướng đến trang đăng nhập.
Nó trông hơi giống thế này.
const authCheck = (req, res, next) => {
const giới thiệuUrl = req.get('người giới thiệu');
thử {
mã thông báo const = req.cookies.Auth;
jwt.verify(mã thông báo, process.env.AUTH_PRIVATE_KEY);
Kế tiếp();
} bắt(err) {
res.redirect(302, `/login?redirect=${referringUrl}`);
}
}
Lúc đầu, tôi nhận nó là mã trạng thái phản hồi 307 và nó hoạt động tốt với các yêu cầu GET. Trình duyệt thay đổi trang thành URL giới thiệu
.
Nhưng đối với các yêu cầu Đăng, việc sử dụng trạng thái 307 sẽ khiến trình duyệt chuyển hướng sử dụng phương thức đăng. Tuyệt vời, vì vậy tôi chuyển sang 302. Bây giờ nó gửi yêu cầu nhận nhưng thực tế không thay đổi url trong trình duyệt.
Làm cách nào tôi có thể triển khai chức năng này từ phía máy chủ?
Cảm ơn trước.
Như @regilero đã nói, vấn đề nằm ở phía khách hàng. Máy chủ GraphQl của bạn không thể thay đổi url trong trình duyệt vì mã js đưa ra yêu cầu chứ không phải trình duyệt.
Bạn có thể nắm bắt trạng thái lỗi 30* và chuyển hướng thủ công trên mã máy khách của mình.
Nếu bạn đang sử dụng Apollo Client cho graphQl, bạn có thể làm theo hướng dẫn này https://www.apollographql.com/docs/react/features/error-handling/#network-errors
Tôi là một lập trình viên xuất sắc, rất giỏi!