301和302重定向注意事项

最近发现聊天室退出后,再次创建房间提示居然是房间不存在,这让我表示很郁闷。因为最近都没怎么做自己的网站,也不知道那里的问题,最后看了很久才发现原来是之前改了跳转方式的问题。

最开始我认为跳转到下一个页面只要不是临时提示页面都可以用301跳转,原来大错特错了。

我们看一下下面几个图:

302跳转控制台信息

302第一次跳转
302第二次跳转

301跳转控制台信息

301第一次跳转
301第二次跳转

看了之后就发现, 301第二次跳转的时候没去请求服务器,直接使用的缓存。 所有房间没有创建。

所以要慎用301跳转,301跳转主要用于一个连接永远跳转的另外一个连接,也就是说如果这个连接里面会执行代码再跳转的情况就不要用301跳转了。一般主要用于网站连接改版,网站迁移使用。

学艺不精啊,以后还要多多学习。

还有一点POST请求的301重定向,再次POST提交时还是会提交数据的,而不是使用缓存。

HTTP/1.1以后,推荐使用303307对原来的302进行替换。功能都是一样,主要区别在于对POST请求的处理:

  • 303:表示POST请求已经被处理,可以使用GET方法到location获取。
  • 307:表示POST请求没有被处理,重新向location发起POST请求。
  • 301302303进行POST重定向时,均使用GET到新的location,而且不能获取到POST参数。
  • 307进行POST重定向时,使用POST到新的location,能获取到POST参数。