执行 2x 的脚本是 Chrome + Firefox 中的预期行为或错误?

Posted

技术标签:

【中文标题】执行 2x 的脚本是 Chrome + Firefox 中的预期行为或错误?【英文标题】:Script executing 2x is an expected behaviour or bug in Chrome + Firefox? 【发布时间】:2019-03-31 11:36:01 【问题描述】:

编辑:这个问题与@mario 标记的任何重复帖子无关

如果您也遇到这种情况,请查看来自@MonkeyZeus's 的comment 答案。


我有一个非常基本的 php/mysql 脚本,可以将 1 行插入数据库。但由于某种原因,我发现如果我想通过在 Chrome / Firefox URL 栏中键入 URL 来运行脚本,但没有完成它,只需单击已访问的选项 - 我的脚本会执行两次。

我使用的是 Chrome 最新的 64 位版本,内部版本:69.0.3497.100。

Firefox:62.0(64 位)(好像在 v63 中已修复?)

这是预期的行为还是潜在的错误?如果不是错误,谁能解释一下为什么会这样?

编辑:

请重新提出问题,因为我的问题与重复的帖子无关,马里奥提到...

正确答案发给@MonkeyZeus。

【问题讨论】:

你能显示你的脚本代码吗? 检查您的设置并确保您的浏览器未设置为预取网页内容。一些浏览器将其称为“速度模式”或类似的 BS。见technipages.com/google-chrome-prefetch @mario 你能重新打开这个吗?如果没有,那么至少链接到解决问题的副本。谢谢! @Radical_Activity 很高兴我能提供帮助,但只要这个问题被关闭,我就无法发布答案。无论如何,祝你的项目好运! @mario 我同意***.com/questions/31215875/… 但不同意另一个 【参考方案1】:

这里的关键是永远不要通过 GET 请求进行潜在的破坏性操作。始终,始终通过 POST 执行这些操作,并使用令牌保护那些免受 CSRF 的攻击。

在您不知情的情况下,链接可能会以各种方式被预取、预加载、抓取、成像或以其他方式访问。翻译工具、书签截图工具、笔记管理器应用程序和其他工具将加载任何 GET 请求,而无需担心后果。

想象一下,如果您有一个删除某些内容的链接,我可以猜出该 URL 是什么。我可以向您发送带有图片标签的电子邮件,例如:

<img src="http://example.com/user/290/delete">

然后该用户会立即被删除,无需确认。你甚至不会知道它发生了。这就是为什么通过 POST 接受是至关重要的原因。

【讨论】:

以上是关于执行 2x 的脚本是 Chrome + Firefox 中的预期行为或错误?的主要内容,如果未能解决你的问题,请参考以下文章

由于 MIME 类型错误,Chrome 拒绝执行 AJAX 脚本

Chrome 对 JS 的支持似乎不是很好,为啥有些 JS 脚本执行不了

巧用chrome Snippets

巧用chrome Snippets

chrome扩展拒绝执行内联脚本

webdriver使用已打开过的chrome