Проблема с подключением к svn (400: неверный запрос)

Вывод: у меня возникла проблема с svn, и после "отладки" я не знаю, что делать дальше. Я полагаю, что кто-то еще мог столкнуться с этой проблемой раньше. Проблема, похоже, в том, что я пользуюсь прозрачным прокси-сервером, который использует мой провайдер, но это не объясняет всех фактов.

Подробности: у меня возникли проблемы с подключением моего компьютера к репозиторию svn в моем собственном домене, размещенном на DreamHost. Я использую браузер репозитория tortoise-svn для подключения, но после выполнения любого действия (добавление папки, расширение исходного дерева...) я получаю сообщение «400: сообщение о неверном запросе».

DreamHost и svn faq говорят, что проблема может заключаться в том, что я использую какой-то прокси-сервер, который настроил мой интернет-провайдер, и я не имею над ним никакого контроля. Проблема в том, что у меня есть другой репозиторий, который отлично работает. Это заставляет меня немного сомневаться, что это действительно проблема, поскольку я предполагаю, что прокси-сервер остановит каждое соединение svn.

С другой стороны, моему другу удается нормально подключиться, используя другого провайдера.

Я был бы признателен за любую помощь в том, почему это происходит (и только с одним репо, а не с другим), и куда я могу пойти отсюда.

Заранее благодарю за любую помощь.

[РЕДАКТИРОВАТЬ 1]: я также пытался подключиться к порту 81 вместо 80, сервер DreamHost svn, похоже, не принимает это (я получаю сообщение об ошибке «не удалось подключиться к серверу»).

[EDIT 2]: Кто-то предложил, согласно svn faq, подключиться с помощью https. Это, вероятно, сработает, однако в моей учетной записи DreamHost сейчас нет ssl, и его добавление будет стоить мне дополнительной ежемесячной платы. Я, вероятно, сделаю это, если у меня не будет другого выбора, но я бы предпочел найти другое решение, если смогу, чтобы снизить затраты.

P.S. Я не был уверен, публиковать ли это здесь или на ServerFault, так как это вопрос svn, и я полагаю, что наиболее вероятные люди, столкнувшиеся с этой проблемой, - программисты.

П.П.С. Если это кому-то поможет, я пронюхал трафик с моего компьютера на хост с помощью WireShark, и последнее отправленное сообщение (исходящее с моей машины) выглядит следующим образом:

REPORT /**** HTTP/1.1
Host: svn.***.com
User-Agent: SVN/1.6.5 (r38866)/TortoiseSVN-1.6.5.16974 neon/0.28.6
Connection: TE
TE: trailers
Content-Type: text/xml
Accept-Encoding: gzip
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops
Content-Length: 109
Accept-Encoding: gzip
Authorization: Basic ***=

<?xml version="1.0" encoding="utf-8"?><S:get-locks-report xmlns:S="svn:" xmlns:D="DAV:"></S:get-locks-report>

person Edan Maor    schedule 18.09.2009    source источник
comment
Я думаю, что это один из тех вопросов, которые относятся как сюда, так и к ошибке сервера.   -  person MitMaro    schedule 18.09.2009
comment
Я здесь немного новенький... не осудят ли меня, если я опубликую это и на ServerFault?   -  person Edan Maor    schedule 18.09.2009
comment
Я думаю, что было бы несколько безопасно спросить об ошибке сервера. Просто упомяните, что вы уже разместили свой вопрос о переполнении стека, и опубликуйте свои рассуждения (вы не получили хорошего ответа) для публикации об ошибке сервера.   -  person MitMaro    schedule 19.09.2009


Ответы (6)


Я использую Dreamhost SVN, настроенный на моем домене, и получаю к нему доступ через ssh+svn. Этот протокол не требует установки сервера SVN в DH. Вместо этого он будет получать доступ к вашей учетной записи через SSH и выполнять локальные команды оболочки для SVN.

URL-адрес репозитория в конечном итоге выглядит следующим образом:

svn+ssh://[email protected]/home/yourDHusername/svn/yourrepositoryname/

Это хорошо работает только в том случае, если вы настроили SSH-доступ без пароля к своей учетной записи оболочки DH. Для этого вам нужно сгенерировать пару открытого/закрытого ключа, приватный сохранить на вашем компьютере, а открытый загрузить в вашу учетную запись оболочки DH в ~/.ssh/authorized_keys. То, как вы это настроите, зависит от вашего выбора ОС. См., например:

http://blog.dreamhosters.com/kbase/index.cgi?area= 138

person user183754    schedule 03.10.2009
comment
Спасибо, на самом деле это именно то, что я сделал после еще нескольких раундов туда и обратно с Dreamhost. Одна вещь, которую я не понял, заключалась в том, почему URL-адрес оказывается именно таким... Я создал поддомен для размещения своего svn (svn.mydomain.com), но используя ssh, репозиторий URL-адресов не имеет ничего общего с поддомен. У вас есть идеи, почему это так? - person Edan Maor; 04.10.2009
comment
Я тоже пытаюсь подключиться таким же образом в Windows 7. Он настроен с помощью Dreamhost, и я могу подключиться без пароля с помощью Putty. Однако когда я ввожу URL-адрес в Subclipse, я получаю: ошибка проверки местоположения, не удается найти файл, не удается туннелировать. Идеи? - person Karl; 21.01.2013

Я нашел это на сайте TortoiseSVN: 400 Bad Request

Не удалось выполнить запрос REPORT на '...' ОТЧЕТ о '...': 400 Bad Request (http://... )

Вы находитесь за брандмауэром, который блокирует запросы DAV. Большинство брандмауэров так делают. Либо попросите администратора изменить брандмауэр, либо войдите в репозиторий с помощью https:// вместо http://, как в https://svn.collab.net/repos/svn/ Таким образом, вы подключаетесь к репозиторию с шифрованием SSL, которому не могут помешать брандмауэры (если они не блокируют порт SSL полностью) .

person crashmstr    schedule 18.09.2009
comment
Спасибо, но я это уже читал... Я обновил вопрос, чтобы объяснить, почему я предпочитаю другой вариант. - person Edan Maor; 19.09.2009

Вы можете проверить свою конфигурацию dav_svn.conf и добавить эту строку SVNAdvertiseV2Protocol off.

Вы можете сослаться на эту страницу "400 Bad Request при фиксации в SVN"

person user4765158    schedule 08.04.2015

Если вы можете попробовать подключиться через другой порт, отличный от 80. Могу поспорить, что другое репо, которое работает нормально, использует https, который находится на другом порту. Ваш интернет-провайдер фильтрует определенные запросы на порту 80, по крайней мере, я так думаю.


Обновление:

Чтобы подключиться к серверу через другой порт, вам необходимо настроить сервер так, чтобы вы могли это сделать. Это не так просто, как просто поместить :81 в URL-адрес. Ваш хост, вероятно, должен будет настроить это для вас. Я бы проверил ваш хост, иногда они устанавливают нестандартные порты для общих служб, чтобы обойти такие проблемы, как ваша.

Вы также можете связаться с вашим интернет-провайдером и узнать, что они говорят об этом. Они, вероятно, будут отрицать, что проводят какую-либо фильтрацию, но попытка того стоит.

person MitMaro    schedule 18.09.2009
comment
На самом деле я пытался подключиться через порт 81 (вы просто добавляете :81 в конце URL-адреса, например svn.mydoman.com:81/repo, верно?). Это предложение также есть в FAQ. К сожалению, я не думаю, что сервер DreamHost принимает это как входящий порт, так как я получаю сообщение об ошибке «Не могу подключиться к серверу». - person Edan Maor; 18.09.2009
comment
Только если ваш сервер настроен на прием соединений через порт 81. - person MitMaro; 19.09.2009
comment
Я снова поговорил со своим хостом об этой проблеме, и, хотя они не принимают соединения на других портах, они указали мне направление включения ssh, что решило проблему. Спасибо - person Edan Maor; 21.09.2009

В моем случае это был просто вопрос обновления клиента Tortoise. У меня была запущена версия 1.8, в которой я получил ошибку, на виртуальной машине у меня была запущена версия 1.8.4, которая работала нормально.

person Steef    schedule 09.09.2014

Я понял, что проблема связана с какой-то папкой. Я зашел в папку, выбрал каждую подпапку и попробовал команду «Обновить» для каждой папки (можно сделать все вместе).

Это сработало

person Revious    schedule 21.10.2014