栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Express JS路由将POST重定向到POST

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Express JS路由将POST重定向到POST

我不确定我是否正确理解您的问题。据我了解,您希望将POST请求

/
重定向到
/login
棘手的POST请求。

通常,您通过发送301永久移动或302找到的HTTP状态代码来进行重定向。它们通常在实践中都好像是303 See
Other,并且发出GET请求一样。请参阅Wikipedia上的HTTP状态代码列表:

这是行业实践与标准相矛盾的一个例子。HTTP / 1.0规范(RFC
1945)要求客户端执行临时重定向(原始描述短语为“临时移动”),但是流行的浏览器使用303的功能实现了302。因此,HTTP /
1.1添加了状态代码303和307,以区分这两种行为。但是,某些Web应用程序和框架使用302状态代码就像使用303。

创建了307临时重定向(自HTTP / 1.1起)以解决此问题,不允许更改HTTP方法-因此从POST重定向仍应为POST-请参阅Wikipedia:

在这种情况下,应使用另一个URI重复该请求;但是,将来的请求仍应使用原始URI。与历史上实现302的方式相反,在重新发出原始请求时不允许更改请求方法。例如,应使用另一个POST请求重复POST请求。

据我所知,浏览器应该在进行此类重定向之前警告用户。我不知道这在实践中如何运作。我不会依靠它,因为它充其量只会使用户烦恼,甚至根本无法工作。

我的建议是更改此:

app.post('/login', function (req, res) {  // logic});

对此:

function loginHandler(req, res) {  // logic}app.post('/login', loginHandler); app.post('/', loginHandler);

或类似的东西,使用正则表达式:

app.post(/^/(?:login)?$/, function (req, res) {  // logic});

这样,将代替相同的处理程序用于这两个路由。这将更快,更强大,因为那样您就不必依赖重定向工作了,根本就没有重定向。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号