http永久重定向和临时重定向在表单提交场景中的工作方式

http永久重定向和临时重定向在表单提交场景中的工作方式,http,http-headers,Http,Http Headers,假设我在www.example.com/registration.php中有一个表单,该表单提交到www.example.com/process.php并重定向到www.example.com/welcome.php。因此,当我单击submit时,会生成一个post响应并发送到process.php。从那里发送重定向代码,比如301(permanentit),作为位置为www.example.com/welcome.php的响应。 我的问题 1) 维基百科上说 如果在中接收到301(或302中的

假设我在www.example.com/registration.php中有一个表单,该表单提交到www.example.com/process.php并重定向到www.example.com/welcome.php。因此,当我单击submit时,会生成一个post响应并发送到process.php。从那里发送重定向代码,比如301(permanentit),作为位置为www.example.com/welcome.php的响应。 我的问题 1) 维基百科上说

如果在中接收到301(或302中的相同情况,对于303307)状态代码 响应除GET或HEAD以外的任何类型的请求,即客户端 在重定向之前必须询问用户

所以,如果我提交,我应该被要求确认,但这种情况从未发生过,它会直接进入welcome.php页面

2) 在上面解释的表单提交场景中使用301永久和302(也是303307)-临时重定向之间有什么区别

3) 我真的不能从下面的句子中得到它

永久移动的HTTP响应状态代码301用于 永久重定向,表示使用URL的当前链接或记录 接收到的301永久移动响应应为 更新到响应的位置字段中提供的新URL。 此状态代码应与位置标题一起使用。RFC2616 声明:如果客户端具有链接编辑功能,则应 更新对请求URI的所有引用

将所有链接更新到新uri的意义在于浏览器(用户代理)。是否仅用于搜索引擎索引

最后

搜索引擎不索引临时重定向,永久重定向将当前请求url替换为重定向响应中的新url。搜索引擎是否也考虑了 上面的提交,如果我在process.php中给出301重定向响应以重定向到
welcome.php然后registration.php将被搜索引擎索引数据库中的welcome.php所取代

通常不建议使用301或302响应重定向任何未获取或引导请求的请求,许多用户代理不支持这一点

我怀疑你的术语有点混乱。据我所知,/process.php处理来自/registration.php的请求,并发出带有301状态码的响应,要求用户代理转到/welcome.php。您在RFC 2616中引用的场景是,服务器接收到一个到/process.php的POST请求,并将POST请求本身重定向到/process_v2.php,然后由/process_v2.php处理该请求。在您的示例中,最初的POST实际上没有重定向,POST的结果包含一个到welcome.php的重定向,然后将使用GET请求检索该重定向


我不确定我是否理解您的搜索引擎问题,据我所知,搜索引擎不提交表单,因此我不相信welcome.php会被索引。

谢谢您的回答。您说过301和302不应该用于重定向任何未收到的请求。因此,在提交表单时,它通常是一个post请求,因此在成功处理post值并将其存储在数据库中之后,通常必须重定向以显示一些成功消息。在这种情况下,应该怎么做。我还从RubyonRails中了解到,如果您提交表单并且成功,请始终使用redirect_to方法重定向到另一个页面或同一页面本身。这里提到的redirect to方法默认情况下总是使用307临时重定向进行重定向。对不起,我相信我对这个概念的理解是错误的。我想我误解了“如果301(或302中的相同情况,对于303307)状态码是响应GET或HEAD以外的任何类型的请求而收到的”我认为这里的请求是指原始表单提交请求,而不是服务器的重定向请求。我认为要重定向除GET之外的请求,我们可以使用307。如果我错了,请更正。谢谢