我想将一些数据发布到服务器,作为回应,我想创建一个CSV文件,其中application/excel
作为MIME类型(最近被识别为Internet媒体类型),以强制浏览器打开Microsoft Excel中生成的CSV文件。但是,我还希望防止用户因刷新页面而意外重新提交相同的信息(重新发布表单)。
使用简单的CRUD操作,我使用Post/Redirect/Get模式,这样任何进一步刷新都只会向服务器发送HTTP Get Request,而不会有任何参数,因此不会改变服务器的状态(Idempotence)。 / p>
当响应不是页面而是文件时,阻止用户将相同信息重新提交(重新发布)到服务器的公认模式是什么?
有什么想法吗?
答案 0 :(得分:2)
发布/重定向/获取模式是浏览事件的答案。 在这里,没有浏览动作(表单提交只打开第三方应用程序,即excel),因此任何类型的浏览相关模式都将是无用的。
我建议你同时使用初始提交的服务器端跟踪(可能有一个唯一的令牌),这样就可以防止文件生成,以及一个易于编写的客户端脚本,如<form onsubmit="this.onsubmit = function(){ return false ; }">
答案 1 :(得分:1)
我可以为您提供另一种解决方案。
如果不同的用户可以发布相同的数据,您还可以在列表中保存用户信息。并根据用户提供错误信息。