编辑:该问题与以@mario标记的任何重复帖子无关
如果您也遇到这种情况,请查看comment答案中的这个@MonkeyZeus's。
我有一个非常基本的PHP / MySQL脚本,该脚本将1行插入到数据库中。但是由于某种原因,我发现如果我想通过在Chrome / Firefox URL栏中键入URL来运行脚本,但是还没有完成,只需单击已访问的选项-我的脚本就会执行两次。
我正在使用Chrome的最新64位版本,内部版本:69.0.3497.100。
Firefox:62.0(64位)(好像已经在v63中修复了吗?)
这是预期的行为还是潜在的错误?如果不是错误,谁能解释为什么会这样吗?
编辑:
请重新打开问题,因为我的问题与重复的帖子无关,马里奥提到...
正确答案进入@MonkeyZeus。
答案 0 :(得分:1)
这里的关键是永远不要通过GET请求进行可能破坏操作的操作。总是始终通过POST进行操作,并使用令牌来保护它们免受CSRF的侵害。
在您不知情的情况下,有各种方法可以预先提取,预加载,抓取,镜像或以其他方式访问链接。翻译工具,书签的屏幕截图工具,笔记组织者应用程序以及其他工具将加载任何GET请求,而无需担心后果。
想象一下,如果您有一个删除某些内容的链接,我可以猜测该URL是什么。我可以向您发送带有图像标签的电子邮件,例如:
<img src="http://example.com/user/290/delete">
然后,该用户将被立即删除,无需确认。您甚至都不知道发生了什么。这就是为什么通过POST接受至关重要的原因。