`

PRG 303 307 post get

 
阅读更多
303:see other,
引用
The response to the request can be found under another URI using a GET method. When received in response to a POST (or PUT/DELETE), it should be assumed that the server has received the data and the redirect should be issued with a separate GET message.

重定向请求到新的URL,而且客户端应当采用 GET 的方式访问这个新的URL。当收到服务器关于post请求的回应时,就认为服务器已经收到了数据,并且我们必须用get去访问这个新的URL。


这种方式在PRG方式中十分常见。这个新的 URI 不是原始URL的替代引用。同时,303响应禁止被缓存。当然,第二个请求(重定向)可能被缓存。新的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。
关于PRG,我的理解市,它是一种为了防止重复提交的模式,当我们使用post提交如购买信息时,服务器接受请求,立刻重定向到一个新的URL,而这个URL代表的网页采用的是get方式访问服务器,参考下面的get和post的区别,get主要完成的是查询的任务,所以,此时即使我们再刷新网页,我们也只是发出get请求,而并不会让服务器误以为我们重新提交了。我们可以参考
http://en.wikipedia.org/wiki/Post/Redirect/Get
http://www.cnblogs.com/wintersun/archive/2012/03/24/2415349.html

307:Temporary Redirect 类似303,
In this case, the request should be repeated with another URI; however, future requests should still use the original URI.[2] In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request. For instance, a POST request repeated using another POST request.

与302的主要区别在于,当我们去访问重定向的URL时,我们不需要一定使用GET,只要和之前第一次访问该URL时使用的访问方式一样就可以了。


这种重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。新的临时性的URI 应当在响应的 Location 域中返回。除非这是一个HEAD 请求,否则响应的实体中应当包含指向新的URI 的超链接及简短说明。因为部分浏览器不能识别307响应,因此需要添加上述必要信息以便用户能够理解并向新的 URI 发出访问请求。如果这不是一个GET 或者 HEAD 请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。


通过这篇文章深化了对于get post的理解
get主要还是用于从服务器上查询一些保密性要求不高的信息,它也向服务器发送数据,但是这些数据只是为了查询而使用的。而post则是倾向于向服务器添加数据。
具体区别如下:
1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
分享到:
评论

相关推荐

    PRG-Pattern:发布 - 重定向 - 获取模式

    POST/REQUEST/GET (PRG) 模式通过永远不允许用户进入已发送 POST 数据的页面来消除这种可能性。 简单地说,无论何时您想要 POST 数据,您都可以获取它,然后立即重定向它们。 您可以使用 HTTP1.1 303 进行重定向,...

    rails-prg:用于实现完整 POST-REDIRECT-GET 模式的 Rails 处理程序(即使出现错误)

    Rails::Prg(重定向后获取) 安全应用程序禁用浏览器历史记录和内部缓存。 不幸的是,当遵循标准 Rails 模式显示错误时,这会导致大多数浏览器出现问题。 作为 Rails 开发人员,我们从来没有真正看到过问题,因为...

    十分钟内学会 避免用户刷新导致重复POST提交

    为了避免用户刷新导致的重复POST提交,常见的解决方案是采用PRG模式,也就是Post-Redirect-Get。PRG模式的核心思想是,在用户提交数据之后,服务器不是直接返回目标页面(通常是提交成功后的结果页面),而是返回一...

    MVC3处理反复提交,HtmlHelper用法大全,拓展方法

    在ASP.NET MVC中,一种常见的处理反复提交的方法是使用"POST-Redirect-GET"(PRG)模式。当用户成功提交表单后,服务器应通过HTTP重定向响应将用户重定向到一个新的GET请求。这样可以确保浏览器不会因为用户点击刷新...

    防止表单重复提交

    为解决这个问题,可以采用服务器端的解决方案,比如使用"POST/REDIRECT/GET"模式(PRG模式)。在接收到POST请求后,服务器先处理表单数据,然后重定向到一个新的GET请求页面,这样刷新页面只会重新加载显示结果的...

    JsfRestfulPostRedirectGet:使用 JSF 和 PrettyFaces 构建的 RESTful、无状态 Web 应用程序的示例实现

    标题中的“JsfRestfulPostRedirectGet”表明我们将关注JSF中实现RESTful模式的POST-REDIRECT-GET (PRG) 设计模式,以及如何通过PrettyFaces来优化URL路由。 首先,让我们了解JSF。JavaServer Faces 是一种用于构建...

    PRGStarBucksSpringMVC:Spring mvc 项目后重定向获取模式,学习目的

    为了解决这些问题,开发人员通常采用“Post-Redirect-Get”(PRG)模式。这是一种最佳实践,它确保在处理POST请求后,用户被重定向到一个新的GET请求,从而避免上述问题。 在Spring MVC中,实现PRG模式通常包括以下...

    防止刷新后退重复提交

    2. **POST-REDIRECT-GET(PRG)模式**: 使用HTTP协议的特性,将提交后的动作改为POST请求后立即进行一个重定向(Redirect)到另一个GET请求的URL。这样,即使用户刷新页面,也只是重新执行GET请求,不会重新提交...

    [Jsp]防止页面表单重复提交的解决方法

    2. **POST-REDIRECT-GET (PRG)模式** 这是一种常见的防止重复提交的方法。用户提交表单后,服务器应返回一个HTTP状态码303(See Other)或302(Found),并提供一个新的URL以重定向用户。这样,即使用户刷新页面,...

    重复提交资料——解析

    4. **POST/REDIRECT/GET模式(PRG)**:提交表单后,服务器不仅处理POST请求,还返回一个HTTP重定向响应(303或302状态码),将用户重定向到新的URL。这样,即使用户刷新页面,也会执行GET请求,不会再次提交表单。 ...

    jsp中实现重复提交

    3. **POST/REDIRECT/GET(PRG)模式**: - 在用户提交POST请求后,服务器应立即返回一个HTTP 303 See Other或302 Found响应,包含一个重定向到新URL的Location头。这个新的GET请求不会携带任何表单数据,因此无法...

    Asp.net 防止提交相关(bing)

    3. **POST/REDIRECT/GET(PRG)模式**:这是一种常见的设计模式,它在处理POST请求后,不是直接返回视图,而是使用Response.Redirect()方法重定向到另一个页面。这样,即使用户刷新页面,也会重新发起GET请求,而...

    JSFRefresh

    1. **使用Post/Redirect/Get(PRG)模式:** 这是防止重复提交的常用策略。在用户提交表单后,服务器不应直接返回同一页面,而应发送一个HTTP 303 See Other 或 302 Found 响应,指示浏览器重定向到一个新的GET请求...

    防止页面二次刷新

    1. **POST-REDIRECT-GET**(PRG)模式:这是一种常见的防止二次提交的方法。在用户提交表单后,服务器接收请求并处理,然后通过HTTP状态码303或302重定向到一个新的页面,而不是简单地返回原来的表单页面。这样,...

    Puakma:Java应用服务器

    Puakma Java应用服务器该软件于2001年6月13日左右开始作为一个研究... 该Web框架最初基于PRG Web模式:Post,Redirect,Get。 但是由个人开发人员来实施他们最终选择的任何模式。 要在此框架上开发应用程序,我们建议使

    JAVA防止重复提交Web表单的方法

    为了解决这个问题,可以配合使用HTTP的`PRG(Post/Redirect/Get)`模式,即在处理完POST请求后,立即向客户端返回一个重定向响应,这样即使用户刷新页面,浏览器也会发出一个新的GET请求,而不会重新提交表单数据。...

    php解决和避免form表单重复提交的几种方法

    6. **Post/Redirect/Get(PRG)模式**: 提交表单后,服务器端处理数据并立即返回一个重定向响应,将用户重定向到一个新的页面,如成功提示页面。这种方法可以避免用户刷新页面导致的重复提交,因为再次提交会变为...

    java server face重定向

    重定向通常用于避免由于POST-REDIRECT-GET模式(PRG)引起的重复提交问题。在用户提交表单后,服务器重定向到一个新的页面,这样即使用户点击刷新按钮,也不会重新发送POST请求。 6. 注意事项: - 重定向后,原来...

    在MVC中将数据从视图获取到控制器

    6. **回发与重定向**:处理完数据后,控制器可以选择重定向用户到另一个页面以防止重复提交(PRG模式:Post-Redirect-Get),或者返回同一个视图但带上错误信息,让用户修正输入。 7. **异步操作**:除了同步的...

Global site tag (gtag.js) - Google Analytics