我正在开发一个网站,我在提交表单时使用常见的帖子/重定向/获取模式(https://en.wikipedia.org/wiki/Post/Redirect/Get)。在我的特定情况下,这是todo列表的项目 - 所以我发帖说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上的Opera Mini(v12)和Mac OSX上的microemulator上(我还没有在其他版本上测试过),结果页面显示没有新项目的待办事项列表,直到我手动刷新页面,返回的列表确实包含新项目。
我假设这里发生的事情是重定向后显示的页面是在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'
虽然我没有发现这个重定向请求如何标记为不可缓存的引用。顺便说一下,所有其他浏览器似乎都不会缓存此重定向请求。
非常感谢你提前帮助。
克里斯。