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