Chrome - 确认重新提交表单 - 不同的行为

Chrome - Confirm Form Resubmission - Different behaviors

在频繁使用 POST 请求的商业 Web 应用程序中,需要执行 history.go(-1) 来触发返回导航。正如其他人所经历的那样,我得到 -

Confirm Form Resubmission ERR_CACHE_MISS

Chrome 中的错误。但是,在 Firefox 中同样可以正常工作(这不是重复的,请继续阅读)。

使用POST请求渲染内容确实是导致上述问题的原因(没有使用Post/Redirect/Get设计模式)。

但是,在寻找替代解决方案时,我们发现在某些网站/应用程序中可以在 Chrome(缓存命中)中返回,而在某些网站中它会失败。我检查了所有来自成功站点的 HTTP headers,看起来 HTTP headers 没有任何区别。

是否可能是浏览器根据 Web 应用程序使用的 SSL 证书采取不同的行为,或者在某些网站中反向导航工作的原因可能是什么?

工作网络应用程序示例:

http://gmail.com/ - 输入一些随机电子邮件。点击下一步。多次输入错误密码并使用浏览器后退按钮返回。

https://support.hostgator.com/ - 在搜索框中输入一些随机文本(重复多次)。使用浏览器后退按钮返回。

POST 失败的 Web 应用程序中使用的请求:

POST /post3.jsp HTTP/1.1
Host: 192.168.1.111
Connection: keep-alive
Content-Length: 18
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: https://192.168.1.111
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: https://192.168.1.111/post2.jsp
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

确定在上述工作流程中 Chrome 后退导航失败,除非 SSL CertificateHTTPS 通信中使用的是有效、可信的证书。

如果您使用的是自签名证书,请将 CA 证书添加为 Trusted Root Certification Authorities,一切都会按预期进行。