4

我不确定这是否是一个现有的错误,但在调试了我正在处理的 Web 应用程序后,我发现 Safari 5 中出现了一些奇怪的行为。这是场景:

页面 A ---- HTTP POST ----> 页面 B ---- HTTP POST ----> 页面 C

页面 A:

<body onload="document.forms[0].submit()">
        <form method="post" action="pageB.php">
                <input type="hidden" name="display" value="ABC" />
        </form>
</body>

B页:

<body onload="document.forms[0].submit()">
        <form method="post" action="pageC.php">
                <input type="hidden" name="display" value="123" />
                <input type="hidden" name="extra" value="XXX" />
        </form>
</body>

C页:

<body>
<?php

        print_r($_REQUEST);
?>
</body>

在我目前测试过的所有浏览器中,只有 Safari 5(Mac 版)会显示 name="display" 的值 "ABC",我仍然可以看到字段 "extra" 的值 "XXX"。所有其他浏览器(包括 Safari 3、4)将显示正确的值“123”。

由于某些原因,我仍然需要使用页面 A 和页面 B 提交表单,在这种情况下,Safari 5 的解决方法是什么?(为了让它在页面 B 提交正确的值,应该是 123,而不是像将值从页面 A 转发到页面 C 那样排序)

非常感谢!

  • Edit1:仅在 Mac OS(Snow Leopard、Lion)Safari 5 上发生
  • Edit2:使示例更清晰
4

2 回答 2

4

Safari is filling in the form field using autofill behaviour. You probably have the "Other forms" option enabled in your preferences. Even Apple recommend you turn this feature off since it can be used for stealing private information.

To workaround this for people who have it turned on anyway try <form autocomplete="off">

于 2012-05-21T03:58:32.717 回答
0

启动像 Fiddler http://www.fiddler2.com/这样的代理并观察表单之间的发布数据移动。如果它只发生在这台机器上的一个浏览器上,它看起来更像是浏览器缓存而不是表单发布错误。如果你从pageB开始呢?如果你先清除缓存怎么办?

于 2012-05-15T05:29:27.160 回答