我想知道是否有任何标准/最佳实践来处理以下情况:
浏览器执行xhr的提取请求,并且响应应指示浏览器应导航到新位置。
例如,用户发送聊天消息,浏览器发送获取请求,并且响应是用户未登录,浏览器应导航到登录页面。
现在,您只需要一个3xx响应,并且通过fetch可以这样处理:
const response = await fetch(request);
if (response.redirected) {
window.location.href = response.url;
}
但是,这将导致重定向页面被加载2次。这很丑陋,甚至更糟,如果重定向的页面是外部页面,它将抛出该异常。
答案 0 :(得分:3)
这通常不是您应该期望在客户端上处理的。相反,您的服务器不应将JSON请求重定向到HTML页面。
在服务器上,如果请求要求提供JSON,则应以401 Unauthorized
和包含错误信息的JSON文档进行响应。
对HTML的同一请求应重定向到登录页面。
大多数服务器端框架都有一种方法来判断给定请求所要求的格式,并发出正确的响应类型。