Проблема с подключением к SVN (400: неверный запрос) - PullRequest
4 голосов
/ 18 сентября 2009

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

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

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

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

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

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

[EDIT 1]: Я также попытался подключиться к порту 81 вместо 80, сервер DreamHost svn, похоже, не принимает это (я получаю ошибку «Не удалось подключиться к серверу»).

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

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

P.P.S. Если это кому-нибудь поможет, я прослушал трафик с моего компьютера на хост с помощью 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>

Ответы [ 6 ]

5 голосов
/ 19 сентября 2009

Я нашел это на сайте TortoiseSVN: 400 Плохой запрос

Сбой запроса REPORT для '...' REPORT of '...': 400 неверных запросов ( http: //...)

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

3 голосов
/ 04 октября 2009

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

URL-адрес хранилища в конечном итоге будет:

SVN + SSH: //yourDHusername@yourdomain.com/home/yourDHusername/svn/yourrepositoryname/

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

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

1 голос
/ 08 апреля 2015

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

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

0 голосов
/ 21 октября 2014

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

Сработало

0 голосов
/ 09 сентября 2014

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

0 голосов
/ 18 сентября 2009

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


Обновление:

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

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

...