【发布时间】: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>
这将适用于上述测试用例,但我将不再登录,这意味着:
- 我无权访问
$_SERVER["PHP_AUTH_USER"] - 我有一个安全漏洞
有什么想法吗?
更新 2
我在上面的 .htaccess 文件 (ErrorDocument 401 /errors/401.php) 中添加了一个缺失的行,并个人提醒要始终在示例中包含所有内容(我应该知道这一点)。在来自Marie Fischer 的 cmets 的帮助下,事实证明:
如果.htaccess 文件包含如下错误文档,Safari 将无法将表单提交到受.htaccess 保护的页面(这会限制 POST):
ErrorDocument 401 /errors/401.php
【问题讨论】: