1. 程式人生 > >關於Ajax 中response出現302的一點見解

關於Ajax 中response出現302的一點見解

今天在專案中,遇到了一個問題就是ajax出現的錯誤,status為302。因為沒有見過這個狀態值,所以只能一點一點去查。

經過查詢我發現,302狀態的解釋是:(來自百度百科)

在最新版中,名稱已經改成found。 總而言之他的結果就是產生一個重定向,是頁面重定向到其他地址。

除錯了一下午也沒有結果,讓帶我的大哥來也是沒法解決後來在網上找打了一點思路:302是一個重定向的指令,所以只要讓他不要產生重定向指令就可以了,

沿著這條路我就這一直找,後來終於有所發現。我發現在執行完某一個方法時,context.response的status就會變成302,所以我在這個重定向狀態產生之後,就果斷

重置了response物件,讓他變回原來的200 OK狀態,問題就解決了。

下班以後,左思右想想搞明白,就到stackoverflow上一搜,果然就有了結果:在asp.net中,如果給某些類設定許可權,就會導致許可權驗證,從而產生指向登陸界、

面的跳轉重定向指令,所以會出現這個狀況。所以明顯是當初設計沒有考慮到後來的修改,但作為bug修改者,也只能做到這樣。

所以以後再遇到這個問題就可以有兩種解法,1是找到源頭,清掉重定向指令,2就是修改架構,調整驗證的位置。

附:關於302的簡單解決辦法(http://www.cnblogs.com/sanshi/archive/2009/07/26/1531440.html)

stackoverflow上關於此問題的解答(http://stackoverflow.com/questions/2800982/ajax-redirect-dilemma-how-to-get-redirect-url-or-how-to-set-properties-for-redi/5115777#5115777)