http的302,303和307
來源:http://hi.baidu.com/redbad/item/cc627e6d6d5182176995e670
在HTTP當中有些用于表示重定向的狀態碼,范圍在3XX。
這里主要說一下302,303和307的區別。
這三個狀態碼在平時都表現為重定向,服務器返回一個新的資源的地址,客戶端去這個新的地址去獲取資源。但是它們之間還是有些細微的區別的。我們通過仔細閱讀RFC可以發現:
1.302 Found。302返回碼指示資源臨時在另一個位置,該位置通過Location指定。如果302響應對應的請求方法不是GET或者HEAD,那么客戶端在獲得用戶許可之前是不能自動進行重定向的,因為這有可能會改變請求的條件。在RFC1045和RFC2068中指明客戶端在響應重定向時是不可以改變請求的方法的。但是在多數實現中,總是使用GET方法來獲取新位置的資源。這樣就將其實現為303的要求了。
2.303 See Other。請求的資源可以在另一個URI處找到,客戶端必須使用GET方法來獲取新位置的資源。不能緩存303響應,但是可以緩存第二次請求的響應。This method exists primarily to allow the output of a POST-activated script to redirect the user agent to a selected resource.很多客戶端識別303狀態碼,302狀態碼的實現其實就是對303狀態碼的響應。
3.307 Temporary Redirect。同303一樣,對于非GET和HEAD請求不能自動重定向。與302的區別是: The Web client issues a request to the new location of the resource using the same request method it used in the current transaction (rather than always using GET).也就是說307相較于302來說,后續請求資源的方法是使用與當前交互相同的方法而不是全部使用GET。
由此可見:303和307的出現是明確了302中的混亂狀態。建議以后使用303和307,302在以后將會被淘汰掉
總結
以上是生活随笔為你收集整理的http的302,303和307的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下如何让鼠标支持滚轮
- 下一篇: Linux如何解开tar.bz2,.bz