如果我发出HTTP请求以获取http://www.example.com上的index.html,但该网址有一个指向http://www.foo.com/index.html的302重定向,那么重定向目标({{3}会发生什么情况}}不可用?用户代理是否会尝试原始网址(http://www.foo.com/index.html)或只返回错误?
问题的背景:我管理的旧网站支持少数现有客户,但不允许新的注册。几乎所有页面都被重定向(使用302而不是301s,原因不明......)到一个较新的站点。这包括注册页面。在未被重定向的其中一个页面上,仍然存在到注册页面的链接,该注册页面本身链接到第三方支付页面(即,在另一个域上)。上周我们当前的网站停机了几个小时,在那个时期,有人成功通过旧网站注册。我能想象到这种情况的唯一方法是,如果302没有找到其预期的URL,则某些(所有?)用户代理绕过重定向,然后转到最初请求的URL。
顺便说一下,我知道有很多更好的方法可以处理我们在这两个网站上遇到的特殊情况。我们在上面!这只是我想要深究的那些奇怪的情况之一。
答案 0 :(得分:2)
您应该收到404 Not Found
状态代码。
由于HTTP是无状态协议,因此用户代理的两个请求之间没有真正的连接。重定向状态代码只是服务器礼貌地告诉客户他们正在寻找的资源现在在其他地方的一种方式。但是,客户端没有义务从该其他URL实际请求资源。
哦,注册页面现在在那个 URL?好吧,我不再想要了......我会去看看一些小猫。
此外,即使客户端决定请求新的URL(它通常做^^),这也可以被视为服务器和客户端之间的全新通信。服务器和客户端都不应该记住先前的请求导致重定向状态代码。相反,应将当前请求视为第一个(也是唯一的)请求。当您请求无法找到的URL时会发生什么?您会收到404 Not Found
状态代码。