为什么在使用绝对 URL 时 HTML POST 形式被解释为 GET?
Why is HTML POST form interpreted as GET when using an absolute URL?
我正在本地编写测试 HTML 表单,在 action
字段中调用远程网页。但是我认为虽然设置为 POST,但表单只会发送 GET 数据。我将它移到远程服务器上,但它的行为方式相同。然后我将绝对 URL 更改为相对 URL 并且它起作用了。
这是预期的,还是有一些服务器设置可以改变这种行为?
这里是重现问题的几乎最小形式:
<form action="http://example.com/foobar.php" method="post">
<input type="text" name="blah">
<input type="submit" value="Submit">
</form>
出于测试目的foobar.php 可以包含
<?php echo $_SERVER['REQUEST_METHOD']; ?>
编辑:我的设置一定有问题,因为我可以在网络上找到大量类似且据称有效的示例(实际上这就是我应该做的最后实现)。
知道了,这是因为 POST data is discarded on 301 Permanent Redirect,我使用的是带有 RedirectMatch 301 的 ServerAlias。
一个解决方案可能是 to use 307 Temporary Redirect,但我想我会坚持使用主服务器名称。
我正在本地编写测试 HTML 表单,在 action
字段中调用远程网页。但是我认为虽然设置为 POST,但表单只会发送 GET 数据。我将它移到远程服务器上,但它的行为方式相同。然后我将绝对 URL 更改为相对 URL 并且它起作用了。
这是预期的,还是有一些服务器设置可以改变这种行为?
这里是重现问题的几乎最小形式:
<form action="http://example.com/foobar.php" method="post">
<input type="text" name="blah">
<input type="submit" value="Submit">
</form>
出于测试目的foobar.php 可以包含
<?php echo $_SERVER['REQUEST_METHOD']; ?>
编辑:我的设置一定有问题,因为我可以在网络上找到大量类似且据称有效的示例(实际上这就是我应该做的最后实现)。
知道了,这是因为 POST data is discarded on 301 Permanent Redirect,我使用的是带有 RedirectMatch 301 的 ServerAlias。
一个解决方案可能是 to use 307 Temporary Redirect,但我想我会坚持使用主服务器名称。