我正在尝试处理.net中的信用卡交易,它在Safari,Opera和IE中完美运行。当我在Firefox中尝试相同的事务时,它会发送两个请求,最后我会收到一张双重收费卡。通过快速搜索谷歌似乎这是Firebug的一个问题,但我无法找到一种方法来阻止这个双重帖子。
有没有人知道如何阻止Firefox(和Firebug)这样做?
答案 0 :(得分:8)
使用nonce,一个仅使用一次的唯一键。
将唯一编号和表单字段一起发送到浏览器(这通常使用隐藏的输入字段完成),并使用事务在服务器上存储副本。在表单中,更改提交时的数字。在处理您的请求时验证密钥是否匹配。
可能还会清楚地解释前端发生的事情,并且可以在客户端消除该问题。最好解决服务器上的双重提交问题,因为有很多方法可以进行双重提交。
答案 1 :(得分:4)
它可能不是萤火虫。
去年我遇到过类似的问题(不过,就我而言,每当查看独立的媒体文件时,这是一系列无休止的GET请求:GIF,JPG,WMV等)。
我禁用了所有扩展程序,然后尝试一次重新启用它们,检查每个扩展程序以查看是否导致问题。根据我的情况,它原来是Skype扩展。
所以,不要只依靠二手知识,这是它的萤火虫。如果你真的磨练了这个问题,你可能会发现它完全是另一回事。
答案 2 :(得分:2)
我使用Firebug 1.2.1并且它已经预防了双重帖子错误,当你想看到AJAX响应时它会显示这个警告:
Firebug需要POST到服务器 获取url的这些信息: http://example.url/
这第二个POST可能会干扰 一些网站。如果你想发送 再次POST,在Firefox中打开一个新选项卡, 使用URL'about:config',设置boolean 值 'extensions.firebug.allowDoublePost' 为true此值每次都重置 你重启Firefox这个问题会 消失的时候 https://bugzilla.mozilla.org/show_bug.cgi?id=430155 已发货。
答案 3 :(得分:1)
我曾经在Firefox中遇到过这种情况 - 在“查看源代码”的某些情况下可能会发生这种情况。 Firebug双柱听起来像是一个类似的问题。
最后,你现在抓住了这件事是件好事 - 如果对信用卡进行双重收费可能就像下订单后按下后退按钮一样简单。 (作为一家电子商务公司的开发人员,我可以告诉你,这种情况一直发生。如果你的结账流程有四个步骤/页面,那么想象一下你可以通过打开造成的破坏在新浏览器窗口中的第3步,回到第一个窗口中的上一步,然后在第二个浏览器窗口中完成订单...相信我,我已经学会了很难。你会惊讶于人们做什么绕过第3步的夏威夷航运附加费计算。)
nonce是一种解决方案;另一种方法是简单地在处理信用卡的页面上进行健全性检查。查看您的数据库并说“等一下......此订单已收费!”然后用优美的错误消息呕吐。希望这有帮助!
答案 4 :(得分:1)
即使nonce不是你解决这个问题的方法,你也需要有一个nonce!对于任何一个人都希望欺骗另一个人做某事的地方(比如涉及到任何金钱),这一点非常重要。它被称为跨站点请求伪造,通常被nonce阻止。如果您需要更多信息,请参阅http://en.wikipedia.org/wiki/CSRF。
答案 5 :(得分:0)
我遇到了同样的问题 - 虽然没有意识到它只针对FireBug。无论如何,你真的应该正确地解决这个问题,以防用户点击后退按钮并重新提交。
通常的方法是在表单中的隐藏字段中为事务设置唯一标记。当服务器端收到表单时,它会阻止进行另一个事务。
答案 6 :(得分:0)
感谢您的回复。 在我的情况下,它与FireFox 2.0.0.20一起成为FireBug(版本1.05)。 一旦我关闭了FireBug插件,双帖就停止了。