用于重定向无效路由的正确状态代码
Posted
技术标签:
【中文标题】用于重定向无效路由的正确状态代码【英文标题】:proper status code for redirecting an invalid route 【发布时间】:2020-12-20 20:31:20 【问题描述】:我设置了以下路线:
/business //look for a business
/business/biz/:id //look at a specific business
我所做的是,如果有人转到/business/biz
,它会重定向到/business
。
我的问题是我应该使用什么状态码?
我不认为它是301
或302
,因为它不是永久的移动,也不是临时的,它只是一个不存在的页面,具有一致的重定向到特定页面。
//get /business/biz page
router.get("/biz", (req, res) =>
res.redirect("/business");
);
我在 Stack Overflow 上查看了不同的问题,但没有找到与我匹配的案例。
【问题讨论】:
你也要改http方式吗? @ManuelSpigolon 你是什么意思?这是一个正常的res.redirect
方法
我看到biz/id
,重定向中的id
在哪里?
【参考方案1】:
要在/business
上重定向/business/biz
,您应该返回308 Permanent Redirect
。
这是***关于状态 308 的引用:
应使用另一个 URI 重复请求和所有未来的请求。 307 和 308 与 302 和 301 的行为平行,但不允许更改 HTTP 方法。因此,例如,将表单提交到永久重定向的资源可能会顺利进行
您还应该检查this answer,解释301
、308
、302
、307
之间的差异,并且写得很好。
【讨论】:
【参考方案2】:建议仅将301
代码用作GET
或HEAD
方法的响应,而将308
永久重定向用于POST
方法。
查看全文here
【讨论】:
以上是关于用于重定向无效路由的正确状态代码的主要内容,如果未能解决你的问题,请参考以下文章
用于重定向到 REST api 中的身份验证的适当 HTTP 状态
在 Firebase onAuthStateChanged 填充状态导致再次登录页面之前重定向到私有路由