1

我正在开发一个网站,我在提交表单时使用常见的 Post/Redirect/Get 模式( https://en.wikipedia.org/wiki/Post/Redirect/Get )。在我的特殊情况下,这是待办事项列表的项目 - 所以我发布说https://example.com/group,处理该请求服务器端将新项目添加到数据库,然后返回 302 响应(http ://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3)指示浏览器应重定向(GET)到https://example.com/group然后显示提交给数据库的所有待办事项列表。这在 Opera Mini 上部分按预期工作,但在 Android (v12) 上的 Opera Mini 和 Mac OSX 上的微模拟器上(我尚未在其他版本上测试过),结果页面显示没有新项目的待办事项列表,直到我手动刷新页面,此时返回的列表确实包含新项目。

我假设这里发生的事情是重定向后显示的页面是在 POST 请求之前缓存在 Opera 代理服务器上的版本。如果是这种情况,是否有办法向代理服务器指示它应该显示来自我的服务器的页面的新版本而不是缓存版本?我也尝试了更正确的 303 状态代码(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4),但同样的事情发生了——尽管规范对此做了说明:

The 303 response MUST NOT be cached, but the response to the second (redirected) request might be cacheable'

虽然我没有找到关于如何将此重定向请求标记为不可缓存的参考。顺便说一句,所有其他浏览器似乎根本没有缓存这个重定向的请求。

非常感谢您提前提供帮助。

克里斯。

4

0 回答 0