作者回复: 你说的“转发”指什么?是代理吗?如果是的话很快就会讲到。
作者回复: 对于单次请求来说是没什么差别的,但浏览器会对301做优化,后续的请求就不会再有跳转动作,所以会快一些。
作者回复: 没有要求,当然可以跳转到https。
作者回复: 说的很好。
作者回复: 是的。
作者回复:
1.浏览器为了方便用户访问网页,肯定是要自动跳转到新的uri的。如果你用Python等语言自己实现客户端,那就可以自己定义处理策略了。
2.实验环境的lua源码都很简单,只有最小的服务器逻辑,如果能参照着看是最好的。
作者回复: 建议打开开发者工具,看看uri是如何处理的。
比如http://www.chrono.com/18-1?dst=/15-1?name=a.json,应该是跳转到15-1。
作者回复: 一直做后端,对前端的技术不是太了解,很抱歉无法回答你的问题。
重定向本质上是服务器向客户端发出的一个指示,如何做取决于客户端。
作者回复: 不错。
作者回复: 学习态度端正,值得表扬。
作者回复: 对,但多了一次请求的成本,比较重。
作者回复: 302不改变原uri,所以每次都会找原uri,成本较高,应当尽量少用。
作者回复:
1.这个没有错,书签是一个正确的地址,只是bing.com给了你一个301跳转,是否更新书签是浏览器的问题,这已经不是http协议的问题了,可以更新也可以不更新。
2.303可以用来防止客户端重复post,比如post一次,后续再多次post都转向一个固定的等待响应页面。
3.302、307这些都是对客户端的“指示”,表示服务器希望客户端接下来要怎么做最合适,决定权还是在客户端。
作者回复: 是single sign on吗。
作者回复:
1.正确。
2.不太对。路由、防火墙是信息过滤设备,是数据的中转站,只负责转发数据。而301/302的重定向跳转是发生在客户端的,由服务器通知客户端跳转到新的uri。
作者回复: 301/302的跳转有很多也是在本站内跳转,也就是站内重定向。
作者回复: 我对php不熟,查了一下,header函数只是发送http响应头,如果用状态码301、302,那就是重定向跳转。
作者回复: 这个时候是否用302更好一些?
作者回复: 可以看一下浏览器里的地址栏,是否前后不一样,如果不同那就是重定向跳转。
具体是301还是302只能用开发者工具看,跳转多了一次请求响应,增加了客户端的延迟,对于服务器倒是没什么影响。
作者回复: 这两个状态码都是用来通知浏览器uri情况的,告知uri表示的资源的状态。
你理解的基本正确。