Post/Redirect/Get pattern | PRG 模式

本文介绍了一种名为Post/Redirect/Get (PRG)的设计模式,该模式被广泛应用于Web开发中,以解决表单重复提交的问题。通过在服务器处理完POST请求后返回一个重定向指令,使客户端使用GET方式访问新的资源,从而避免重复提交,并增强了网页收藏功能的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Post/Redirect/Get 是一种 web 开发设计模式,用于防止表单的重复提交。

默认情况,提交 Post 请求到服务器后,如果直接刷新浏览器,会重新在提交一次 Post 请求。在访问电商网站时,提交订单采用的是 Post 请求,如果直接刷新浏览器就容易导致重复订单的提交,这个不是用户希望发生的行为。PRG 方法就是用户防止这种现象的发生。

默认情况:

下面例图描述了默认情况,服务器和浏览器处理 Post 请求的流程

 

PRG 设计模式

下面例图描述了用 PRG 方法来避免 Post 请求的重复提交。当服务器处理完 Post 请求后,会发响应给用户浏览器,指示用户浏览器用 Get 方式立刻访问另一条 URL 。用户浏览器拿到 Get 请求的数据,整个流程才算结束。此时用户刷新当前页面,也不会引起 Post 请求的重复提交了。

 

完善网页收藏功能

Post/Redirect/Get 方式除了能防止 Post 请求的重复提交外,还可以完善网页收藏功能。把 Post 请求直接返回的网页收藏到书签是无效的,因为这个网页的重现依赖于 Post 请求以及当时提前的数据。采用 PRG 方式,用户正常情况下收藏到的是重定向后 GET 方法返回的网页,这样使得收藏有效了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值