3

单击一个链接会导致两次调用该页面到服务器。我安装了 livehttp 并检查了标头,但无法弄清楚它为什么发送第二个请求。

http://example.com/schedule?delete=290376

GET /schedule?delete=290376 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20110207 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://example.com/schedule
Cookie: Code=XXX; CodeHash=XXXXX

HTTP/1.1 200 OK
Date: Tue, 01 Mar 2011 22:09:51 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Set-Cookie: Code=XXXX; expires=Wed, 02-Mar-2011 00:09:52 GMT; path=/
Set-Cookie: CodeHash=XXXX; expires=Wed, 02-Mar-2011 00:09:52 GMT; path=/
Keep-Alive: timeout=2, max=200
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
----------------------------------------------------------
http://example.com/schedule?delete=290376

GET /schedule?delete=290376 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20110207 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://example.com/schedule
Cookie: Code=XXXX; CodeHash=XXXXX

HTTP/1.1 302 Moved Temporarily
Date: Tue, 01 Mar 2011 22:09:55 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Set-Cookie: Code=XXX; expires=Wed, 02-Mar-2011 00:09:55 GMT; path=/
Set-Cookie: CodeHash=XXX; expires=Wed, 02-Mar-2011 00:09:55 GMT; path=/
Location: http://example.org/schedule?errors=5
Keep-Alive: timeout=2, max=200
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
----------------------------------------------------------
4

2 回答 2

3

如果您没有找到解决方案:

我偶然发现了同样的问题,它似乎与页面编码有关。如果 FireFox 下载的页面包含无效字符(例如,页面内的 utf-8 字符,其 Content-type 标头是其他内容),那么它将再次下载该页面并以它尝试的编码对其进行解析从它在第一页检测到的无效字符猜测。

因此,请确保您的页面返回正确的 Content-type 标头,或者包含具有正确编码的元 http-equiv 标头。

于 2011-04-12T19:08:44.007 回答
1

您碰巧没有使用 firefox,没有 Web 开发人员工具栏,也没有显示页面验证,对吗?

我在黑暗中猜测您的环境,但我的团队和我已经能够证明在 Firefox 中安装该工具栏并设置显示页面验证实际上重复了 POST 和 GET,因为它发送相同的页面数据到验证服务。

于 2011-03-01T22:34:05.207 回答