在RESTful SOA中,假设我通过AJAX发出POST请求,但在请求超时之前我没有得到响应.进一步假设重新提交请求将是有害的.POST不是幂等的.例如,也许我正在发布银行转帐.如果我没有收到回复,我不知道服务器是否处理了请求.
假设我可以控制客户端和服务端,那么处理此问题的最佳做法是什么?
我最初的想法是在每个POST请求中包含一个nonce(即一个伪id;某种唯一标识符); 例如,也许是If-None-Match标头中的值.使用这种方法,客户端可以以编程方式重新发出具有相同伪id的超时请求,如果服务器包含重复值,则服务器可以拒绝它.