我正在運行一個網站,客戶可以提交表單。我在服務器端使用PHP並使用POST方法(大表單)。問題是,有時候,請求會作爲GET請求發送到我的Web服務器,並且沒有發佈信息。只有在從給定的客戶位置提交表單並且問題是間歇性的(大部分時間工作)時,纔會出現此問題。PHP:由於身份驗證服務器,POST數據丟失
使用小提琴手,我想我確定發生了什麼,但不能想到一個解決方法。張貼在計算器上看看是否有人有想法。
基本上,序列如下:
1- POST請求是在所有適當的數據發送。
2 POST請求似乎被認證代理服務器攔截。
3- Proxy Server向POST請求發送HTTP 302響應並重定向到另一個內部地址進行身份驗證。
4-驗證交易發生(二GET請求,與401響應)
5-代理服務器回答一個302重定向到最終認證請求,該請求重定向到原始請求。
6-但瀏覽器將原始請求作爲GET請求發送,而沒有發佈信息而不是發送POST請求,因爲它原來是發送的。
最終結果是用戶的空白頁面,表單數據丟失。
難道是因爲即使原始請求是一個POST,它確實在URL中包含一些參數(也許browswer認爲它是GET,因爲這些?)?
這是正常行爲嗎?我讀過這是根據標準(瀏覽器總是用GET回答302),但我不相信這是這種情況,因爲在這些情況下沒有針對POST請求的解決方案?
必須有一些方法來解決這個問題,導致非常不好的用戶體驗。讓我知道你的想法。
感謝您回答伊恩。問題是我無法控制攔截髮布請求的身份驗證代理服務器,並返回302以啓動其身份驗證序列。所以我看着兩種方法。 1-尋找一種方法來避免驗證序列或者2-恢復POST數據(仍然在瀏覽器歷史記錄中)。但目前爲止沒有成功。 – PCJISM 2012-03-09 12:41:12