重定向

Posted shangyueyue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重定向相关的知识,希望对你有一定的参考价值。

一、重定向的方式

1、js 重定向

window.location.href =‘‘www.baidu.com‘‘;
window.history.back(-1);
window.history.go();

2、h5 meta 

<meta http-equiv="refresh" content="0.1; url=http://jb51.net/">

3、http

301  Moved Permanently:

永久重定向,第二此浏览器直接重定向

302 found

对于301、302的location中包含的重定向url,如果请求method不是GET或者HEAD,那么浏览器是禁止自动重定向的,除非得到用户的确认,因为POST等请求是非冥等的(也就是再次请求时服务器的资源可能已经发生了变化)

虽然rfc明确了上述的规定,但是很多的浏览器不遵守这条规定,无论原来的请求方法是什么都会自动用GET方法重定向到location指定的url。就是说现存的很多浏览器在遇到POST请求返回301、302状态码的时候自动用GET请求location中的url,无需用户确认

303 see other

307 temporary redirect

    3. HTTP 1.1中新增了303、307状态码,用来明确服务器期待客户端进行何种反应。
    4. 303状态码其实就是上面301、302状态码的”不合法”动作,指示客户端可以自动用GET方法重定向请求location中的url,无需用户确认。也就是把前面301、302状态码的处理动作”合法化”了。
    5. 307状态码就是301、302原本需要遵守的规定,除GET、HEAD方法外,其他的请求方法必须等客户确认才能跳转
    6. 303、307其实就是把原来301、302不”合法”的处理动作给”合法化”,因为发现大家都不太遵守,所以干脆就增加一条规定。

 

以上是关于重定向的主要内容,如果未能解决你的问题,请参考以下文章

302 登录重定向后被 IE 删除的 URL 片段

链接中的 URL 片段和 JSF 中的 ajax 重定向

使用片段 (#) 重定向链接 - asp.net

在 PHP 重定向期间处理片段标识符

重定向时如何在 Safari 中保留 uri 片段?

Linkedin OAuth 2.0 重定向 URL 不能包含片段标识符 (#)