【发布时间】:2012-03-25 23:57:50
【问题描述】:
我正在运营一个客户可以提交表单的网站。我在服务器端使用 PHP 并使用 POST 方法(大型表单)。问题是有时,请求作为没有发布信息的 GET 请求到达我的 Web 服务器。仅当从给定客户位置提交表单并且问题是间歇性的(大部分时间都在工作)时,才会出现此问题。
使用提琴手,我想我确定了正在发生的事情,但想不出解决方法。在stackoverflow上发帖看看是否有人有想法。
基本上顺序如下:
1- POST 请求与所有适当的数据一起发送。
2- POST 请求似乎被身份验证代理服务器拦截。
3- 代理服务器向 POST 请求发送 HTTP 302 响应,并重定向到另一个内部地址进行身份验证。
4- 发生身份验证事务(两个 GET 请求,带有 401 响应)
5- 代理服务器响应 302 重定向到最后一个身份验证请求,该请求重定向到原始请求。
6- 但是浏览器将原始请求作为没有发布信息的 GET 请求而不是最初发送的 POST 请求发送。
最终结果是用户出现空白页,表单数据丢失。
可能是因为即使原始请求是 POST,它确实在 URL 中包含一些参数(也许浏览器会因为这些而假定它是 GET?)?
这是正常行为吗?我读过这是按照标准(浏览器总是用 GET 回答 302),但我不敢相信这是这种情况,因为在这些情况下没有解决 POST 请求的方法?
必须有一些方法可以解决这个导致非常糟糕的用户体验的问题。让我知道你的想法。
【问题讨论】: