Safari не работает с формами на сайте .htaccess - PullRequest
0 голосов
/ 21 июля 2009

Я не могу заставить 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

Есть ли решение этой проблемы?

Обновление

Я могу снять ограничение POST в файле .htaccess:

<Limit GET>
  require group XXXXX
</Limit>

Это будет работать для приведенного выше теста, но я больше не буду входить в систему, что означает, что:

  1. У меня нет доступа к $_SERVER["PHP_AUTH_USER"]
  2. У меня дыра в безопасности

Есть идеи?

Обновление 2

Я добавил отсутствующую строку в файл .htaccess выше (ErrorDocument 401 /errors/401.php) и сделал личное напоминание, чтобы всегда включать все в примеры (я должен это знать). Благодаря комментариям от Мари Фишер получается, что:

Safari не сможет отправить форму на страницу, защищенную .htaccess (которая ограничивает POST), если файл .htaccess содержит ErrorDocument, например:

ErrorDocument 401 /errors/401.php

Ответы [ 2 ]

1 голос
/ 21 июля 2009

Ваш пример работает с другими браузерами? Работает ли он с require user вместо группы? Вы смотрели журнал ошибок ваших серверов?

Edit: я сделал быстрый тест, используя ваши примеры, и все работало нормально.

0 голосов
/ 21 июля 2009

Что если вы выполните HTTP-аутентификацию на странице, где у вас есть форма? Тогда вы вошли в систему, и это должно работать. Или

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...