HTML表单不提交正斜杠

时间:2016-02-11 12:05:21

标签: html firefox

我正在开发一个简单的HTML表单,我无法弄清楚为什么以下代码可以在Chrome上运行,但不能在Firefox中运行。

<!DOCTYPE html>
<html>
<body>

<form action="/hello.html" method="get">
  <input type="submit" value="Submit">
</form>

</body>
</html>

过了一会儿,我发现问题是动作网址中的斜线。 当表单操作以正斜杠('/')开头时,表单不会在firefox中提交。 如果操作代码中没有“/”,则按“提交”按钮会导致重定向到hello.html页面。

对我来说,这种行为很奇怪。我认为在带有正斜杠的表单标记的action属性中启动(相对)URL是有效的。 你对这种行为有一些解释吗?

2 个答案:

答案 0 :(得分:2)

它适用于谷歌浏览器,因为Chrome是宽容的(或智能的)。你的意思是:

<form action="hello.html" method="get">

<form action="./hello.html" method="get">


/hello.html有什么区别?

我们假设您的文件的URI是file:///c:/somedir/index.html

./hello.htmlhello.html都解析为file:///c:/somedir/hello.html,因为它们引用了当前目录。

/hello.html解析为file:///c:/hello.html,因为根据http://www.ietf.org/rfc/rfc2396.txt(第16页)

  

以单个斜杠字符开头的相对引用被称为   绝对路径参考...

答案 1 :(得分:0)

以下示例有效。我不确定为什么你的代码不起作用。

<html>
<body> 
   <form action="/my-handling-form-page" method="post">
        <div>
            <label for="name">StackOverflow name:</label>
            <input type="text" id="name" />
        </div>
            <label for="mail">Email:</label>
            <input type="email" id="mail" />

        </div>
    </form>
</body>
</html>

但是,当我从您的代码中删除<!DOCTYPE html>时,它也开始工作了。