将xhr或获取请求重定向到新页面的良好做法是什么?

时间:2019-03-27 16:19:18

标签: javascript ajax fetch

我想知道是否有任何标准/最佳实践来处理以下情况:

  

浏览器执行xhr的提取请求,并且响应应指示浏览器应导航到新位置。

例如,用户发送聊天消息,浏览器发送获取请求,并且响应是用户未登录,浏览器应导航到登录页面。

现在,您只需要一个3xx响应,并且通过fetch可以这样处理:

const response = await fetch(request);

if (response.redirected) {
  window.location.href = response.url;
}

但是,这将导致重定向页面被加载2次。这很丑陋,甚至更糟,如果重定向的页面是外部页面,它将抛出该异常。

1 个答案:

答案 0 :(得分:3)

这通常不是您应该期望在客户端上处理的。相反,您的服务器不应将JSON请求重定向到HTML页面。

在服务器上,如果请求要求提供JSON,则应以401 Unauthorized和包含错误信息的JSON文档进行响应。

对HTML的同一请求应重定向到登录页面。

大多数服务器端框架都有一种方法来判断给定请求所要求的格式,并发出正确的响应类型。