HTTP状态码302、303、307区别

HTTP状态码3XX表示重定向,表明浏览器需要执行某些特殊的处理以正确处理请求。

301 Moved Permanently 
永久性定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。

302 Found 
临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。和301相似,但302表示的资源不是永久移动,只是临时性的。换句话说,已移动的资源对应的URI将来还有可能发生变化,比如,用户把uri保存为书签,但不会像301状态码出现时那样更新书签,而是仍旧保留返回302状态码的页面对应的uri

303 See Other 
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源,=, 
303和302状态码有着相同的功能,但是303明确表示客户端应当采用get方法获取资源,这点与302状态码有区别。 
比如,当使用post方法访问CGI程序,其执行后的处理结果为希望客户端能以get方法重定向到另一个uri上去时,返回303状态码。虽然302也可实现相同的功能,但这里使用302状态码是最理想的。

当301、302、303响应状态码返回时,几乎所有浏览器都会把post改成get,并删除请求报文内的主体,之后请求会自动再次发送。 
301、302标准是禁止将post方法改变成get方法的,但实际使用时大家都会这么做。

307 Temporary Redirect 
临时重定向。该状态码与302有相同的含义。尽管302标准禁止post变化get,但实际使用时大家不遵守。 
307会遵照浏览器标准,不会从post变为get。但是对于处理响应时的行为,各种浏览器有可能出现不同的情况。

 

posted @ 2018-03-02 20:34  阿力瓦  阅读(66129)  评论(0编辑  收藏  举报