【问题标题】:Safari does not work with forms on .htaccess siteSafari 不适用于 .htaccess 网站上的表单
【发布时间】:2010-11-12 14:22:08
【问题描述】:

我无法让 Safari 将表单提交到受 .htaccess 保护的页面。
我已将测试页缩减为:

<html>
<body>

<?php
  if(isset($_REQUEST["name"]))
     echo "<p>You entered: ", $_REQUEST["name"], "</p>";
?>

  <form method='post' action='index.php'>
  <p><input type='text' NAME='name'>
     <input type='submit' name='send' value='Send'></p>
  </form>

</body>
</html>

如果我删除 .htaccess 文件,上面的页面运行没有任何问题。
有了这个 .htaccess 文件,Safari 将永远无法完成页面加载:

AuthUserFile /xxxx/xxxx/.htpasswd
AuthGroupFile /xxxx/xxxx/.htgroup
AuthName Members
AuthType Basic

<Limit GET POST>
  require group XXXXX
</Limit>

ErrorDocument 401 /errors/401.php

这个问题有解决办法吗?

更新

我可以删除 .htaccess 文件中的 POST 限制:

<Limit GET>
  require group XXXXX
</Limit>

这将适用于上述测试用例,但我将不再登录,这意味着:

  1. 我无权访问$_SERVER["PHP_AUTH_USER"]
  2. 我有一个安全漏洞

有什么想法吗?

更新 2

我在上面的 .htaccess 文件 (ErrorDocument 401 /errors/401.php) 中添加了一个缺失的行,并个人提醒要始终在示例中包含所有内容(我应该知道这一点)。在来自Marie Fischer 的 cmets 的帮助下,事实证明:

如果.htaccess 文件包含如下错误文档,Safari 将无法将表单提交到受.htaccess 保护的页面(这会限制 POST):

ErrorDocument 401 /errors/401.php

【问题讨论】:

    标签: html forms safari


    【解决方案1】:

    您的示例是否适用于其他浏览器?它是否适用于require user 而不是组?您查看过您的服务器错误日志吗?

    编辑:我使用您的示例进行了快速测试,一切正常。

    【讨论】:

    • 它适用于 Windows 上的 IE、Firefox 和 Chrome 2。 Mac 上的 Firefox 偶尔会运行。要求组和要求用户之间没有区别。我在服务器日志中没有发现任何特别之处。
    • Windows 上的 Safari 怎么样?如果您在 Mac 上遇到问题,那么您是否尝试过完全关闭浏览器(小红点不行,从菜单中选择退出)并重新开始?
    • 感谢您的测试。我让我更进一步地追求这个......请参阅上述问题的解决方案。我一直在 Safari Windows 上进行测试。
    【解决方案2】:

    如果您在拥有表单的页面上进行 HTTP 身份验证怎么办?然后你登录了,它应该可以工作了。还是?

    【讨论】:

    • 可能 - 这需要重新考虑安全问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多