【发布时间】:2016-06-17 16:14:38
【问题描述】:
感谢 StackOverFlow,我以为我之前已经回答了这个问题,但我匆忙回答,结果证明这不是我问题的真正原因。
我检查了我的 Apache 访问日志:
这是我在 Google Chrome 浏览器上浏览我的网络应用程序。
127.0.0.1 - - [06/Jan/2010:22:17:35 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146
127.0.0.1 - - [06/Jan/2010:22:17:36 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:17:38 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
这是我在 IE7 上浏览我的网络应用程序。
127.0.0.1 - - [06/Jan/2010:22:21:49 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:21:50 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
这是我在 Firefox 上浏览我的网络应用程序。
127.0.0.1 - - [06/Jan/2010:22:18:08 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:18:09 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:18:10 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
127.0.0.1 - - [06/Jan/2010:22:18:10 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
127.0.0.1 - - [06/Jan/2010:22:18:11 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146
127.0.0.1 - - [06/Jan/2010:22:18:12 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146
这只是我在四处点击。但是注意,对于每个页面请求,firefox 似乎都会加载页面两次,并且会影响我的 PHP 脚本,因为它们执行了两次并两次插入到我的数据库中!
为什么会这样?我正在使用 Firefox 3.5.6。我猜这是 Firefox 的问题,而不是 PHP/Apache 的问题?
【问题讨论】:
-
我真的希望您所说的插入是严格记录的。如果发出 GET 请求会导致其他一些数据更改,那么您在这里遇到了严重的设计问题。
-
If issuing GET requests causes some other data change这完全是虚假陈述。无论您是在 post 中接受来自表单字段集的一系列输入参数,还是在 get 中接受查询字符串集合,都没有区别。 -
我不会说没有区别。一方面,发布请求需要重新发布(大多数浏览器会提示用户),而 GET 请求可以很容易(无意地)重新请求,复制 URL 并粘贴它会重新请求它。此外,有人可以轻松地将链接放在他们网站上的 img 中,并且 src 指向您的网站,任何访问他们网站的人都会发布到您的网站。如果您的安全性是基于 cookie 的,他们的 cookie 仍然会被发送。因此,有很多理由不使用 GET 来发布要持久化的数据或会更改数据的请求。
标签: firefox httprequest