HTML 表单 - 'action' 和 'next' 变量之间的区别?
Posted
技术标签:
【中文标题】HTML 表单 - \'action\' 和 \'next\' 变量之间的区别?【英文标题】:HTML forms - difference between 'action' and the 'next' variable?HTML 表单 - 'action' 和 'next' 变量之间的区别? 【发布时间】:2014-05-29 05:09:35 【问题描述】:根据我正在阅读的 html 书籍(并根据此处:http://www.w3schools.com/tags/att_form_action.asp),它说在表单的情况下:
<form action="/login/" method="post">
'action' 指定提交表单时将表单数据发送到何处。它的语法可能是
<form action="URL">
现在,在我正在阅读的书中,它还谈到了一个隐藏的“下一个”变量,如下所示:
<form action="/login/" method="post">
<input type='hidden' name='next' value='/' />
<input type='submit' value='login' />
我正在读的书说
The form contains a submit button as well as a hidden field called 'next'. This hidden variable contains a URL that tells where to redirect the user after they have logged in.
据我了解,无论哪种方式,“操作”都不会指定提交表单后重定向到的位置吗?那么是否不需要隐藏的“下一个”变量,因为“动作”已经告诉了重定向到哪里?如果 action 和 next 是不同的 URL,哪个优先?它是重定向到正在运行的 URL 还是在下一步中的 URL?
【问题讨论】:
标准 html 中没有“next”字段,本书使用此作为字段的示例,该字段由某些服务器端脚本处理,应由您编写以从表单所在的页面进行重定向提交到“下一页” @Lashane 对,但“操作”不是已经说明提交表单后重定向到的位置吗?next
就是 Lashane 所说的一个例子。我一般不使用隐藏,但如果你需要提交一个用户不应该看到/修改的 id 可能会很好。
action 用于指示表单将被提交到哪里,所以在某种意义上 - 是的,通过提交表单我们被重定向到新页面
不,表单只是在“action”中提交到url,服务器端脚本返回一些页面到浏览器或者可以重定向到另一个页面
【参考方案1】:
首先,action 属性与重定向无关。
当您单击表单中的提交按钮时,浏览器会使用get
或post
向服务器发送HTTP 请求,特别是对action 属性中提到的资源。接下来会发生什么完全取决于您使用的服务器端。
据我所知,请求中 Next
属性的存在没有特殊含义。
通常在提交表单时会发生以下两种情况之一
服务器执行一些处理然后返回一个 HTTP 响应。这将在浏览器的地址栏中显示操作 url 服务器进行一些处理,然后将用户重定向到新页面。这通常由程序员编写,不会自动发生。在 php 中,您将使用http_redirect(someURL)
。 next
隐藏字段可用于保存此 URL,但它本身不会做任何事情。
在技术说明上,http 重定向,无论是 asp、php 等原因,都会导致浏览器的额外往返。因此,在上述重定向的情况下,将向浏览器发送一个 HTTP 响应,其中包含一个标头,指示重定向和指向的位置。然后浏览器将向新位置发送新请求。这就是新地址出现在浏览器地址栏中的原因。
【讨论】:
【参考方案2】:默认情况下,操作 URL 是页面将被重定向到的位置。除非您有服务器端代码来执行此操作,否则 next 的值无效。即使您确实编写了代码,重定向也会首先转到操作 url,然后再转到您更改的任何其他 url。
【讨论】:
以上是关于HTML 表单 - 'action' 和 'next' 变量之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章
thinkphp5无法用html表单中的action跳转到另一个页面?
什么是阻止对 HTML 表单中 action 属性中的链接的攻击?