我正在使用PHP进行作业,如果输入的URL有轻微错误,我已实施301重定向。这让我想到重定向实际上是如何工作的。我正在使用像这样基本的东西:
header("Location: https://www.example.com");
我还注意到,在没有尾部斜杠的情况下输入目录时,Apache会自动重定向。结果是一样的。
我的理解是服务器发送具有301状态和适当位置标头的响应。现在,客户端是否需要发出另一个请求,或者服务器是否自动发送了正确的资源?此外,客户端可以忽略重定向吗?
答案 0 :(得分:3)
当返回重定向时,客户端会向新URL发出另一个请求。重定向可以是完全不同的服务器,因此原始服务器无法自行发送正确的资源。即使服务器可以自己返回资源,客户端也需要知道新的URL,因为其中的相对URL需要相对于该位置而不是原始位置进行解析。
客户端当然可以忽略重定向。如果您使用curl
选项,则--location
客户端仅遵循重定向。大多数客户端也会限制他们为满足单个请求而遵循的重定向数量,以防止重定向循环。