1
chuck911 2011-12-29 20:59:22 +08:00
POST方法不具备幂等性!
PUT方法在此又不适用 |
2
ofan OP ......不具备所以才要用幂等的设计
|
3
9hills 2011-12-29 21:23:10 +08:00
回复用ajax做就感觉好多了,现在回复还会刷新页面。。好古老的设计
|
4
delectate 2011-12-29 21:23:49 +08:00
试试……
|
5
delectate 2011-12-29 21:24:12 +08:00
木有效果啊。看来触发bug还要特殊环境的
|
8
gDD 2011-12-29 21:29:46 +08:00
可以考虑按`发送`以后按钮不可用10s左右。这样既能防止重复发帖又能防止POST失败以便再次POST。
|
10
9hills 2011-12-29 21:34:02 +08:00
用ajax一劳永逸,有想法的话,还能显示出一个进度条。
OT: 再慢的操作,只要有了进度条,就能给人一种很可靠的感觉。。。 |
11
ofan OP @gDD 这个方法最简单,但是有些情况不适用,比如客户端关闭了甚至不支持js的情况。这是有可能的,比如内嵌了html浏览器的桌面程序,手机上的浏览器,一些bot,一些下载工具(wget,aria..)等等
|
12
chuck911 2011-12-29 21:49:26 +08:00
|
13
cyberscorpio 2011-12-29 22:00:52 +08:00
@ofan 现在还有关 js 的?
|
14
ofan OP @cyberscorpio 关js和不支持js的属于同一种情况
|
15
delectate 2011-12-29 22:03:25 +08:00
有。安了noscript。
|
16
ofan OP 还有用油猴的firefox党,什么都是有可能发生的
|
17
delectate 2011-12-29 22:06:46 +08:00
与其在客户端验证,不如服务器设限。同一id每5s只能提交一次。
|
18
gDD 2011-12-29 22:08:39 +08:00
@ofan 关了JavaScript的话jQuery代码就不会运行了就`bind`不上按钮的`click`,然后基本发帖功能还是能用的,和目前的效果一样。
|
20
ofan OP 我的意思是说不用js的方法,主贴里给了链接了嘛,去看看. 可以每次页面get时,服务器返回一个ticketID,然后在回复时讲此id作为一个参数 ?tid=... ,这样服务器端添加完回复后要返回新的页面,里面再带一个新的ticketID,旧的ticketID失效。这样就保证每次只能回复一次
|
21
ofan OP 然后旧的id在一定时间后重新有效,比如一小时后..
|
22
delectate 2011-12-29 22:18:00 +08:00
记得phpbb论坛有个sid串号问题。就是说你发的链接如果带上sid=***的信息,别人(未登录)访问此链接,就会以发帖人权限登录论坛。
|
23
ofan OP 对,就这意思,这种技术web里应该用的非常多啊,不知道这里为嘛不用。重复回复的问题,我记得只有在asp流行的时代比较多
|
24
cyberscorpio 2011-12-29 22:37:52 +08:00
@ofan 我就是这个意思,关 js 的很少,不支持的几乎没有。
|
25
ofan OP @cyberscorpio 我已经列出不支持的情况了,特别是对于移动设备,能不用js的就不用js
|