代码之家  ›  专栏  ›  技术社区  ›  Edan Maor

连接到svn时出现问题(400:错误请求)

  •  4
  • Edan Maor  · 技术社区  · 15 年前

    总结: 我遇到了一些svn问题,在“调试”了一段时间后,我不确定从这里可以走到哪里。我想以前可能有人遇到过这个问题。 问题似乎是我支持ISP使用的透明代理,但这并不能解释所有事实。

    细节:

    DreamHost和svn faq都表示,问题可能是我在ISP设置的某种代理之后,没有任何控制权。问题是,我还有另一个回购协议,效果很好。这让我有点不确定这是否真的是问题所在,因为我假设代理将停止 每一个 svn连接。

    我非常感谢任何人帮助我解释为什么会发生这种情况(并且只有一次回购而不是另一次),以及我可以从这里走到哪里。

    [编辑1]:

    根据svn常见问题,有人建议使用https进行连接。这可能会起作用,但是,我的DreamHost帐户现在没有ssl,添加ssl会使我每月额外收费。如果没有其他选择,我可能会这么做,但如果可以的话,我更愿意找到一个不同的解决方案来降低成本。

    另外,我不确定是在这里发布还是在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 回复  |  直到 15 年前
        1
  •  5
  •   crashmstr    15 年前

    我在TortoiseSVN网站上发现了这个: 400 Bad Request

    对“…”的“…”报告请求失败:400个错误请求( http://..

    您位于防火墙后面,防火墙阻止DAV请求。大多数防火墙都是这样做的。 请要求管理员更改防火墙,或使用https://而不是http://访问存储库,如中所示 https://svn.collab.net/repos/svn/ 通过这种方式,您可以使用SSL加密连接到存储库,防火墙不会对其进行干扰(如果它们没有完全阻止SSL端口)。

        2
  •  3
  •   user183754    15 年前

    我使用在我的域上设置的Dreamhost SVN,并通过ssh+SVN访问它。该协议不需要在DH设置SVN服务器。相反,它将通过SSH访问您的帐户,并向SVN执行本地shell命令。

    svn+ssh://yourDHusername@yourdomain.com/home/yourDHusername/svn/yourrepositoryname/

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

        3
  •  1
  •   user4765158    9 年前

    您可以检查dav_svn.conf的配置,并添加这一行SVNAdvertiseV2Protocol off。

    你可以参考这一页 "400 Bad Request when commit to SVN"

        4
  •  0
  •   MitMaro    15 年前

    如果您可以尝试通过80以外的其他端口连接。我敢打赌,另一个运行良好的回购协议是使用不同端口上的https。您的ISP正在过滤端口80上的某些请求,至少我猜是这样。


    更新:

    要在其他端口上连接到服务器,您需要将服务器配置为允许您这样做。这并不是简单的放置 :81 在url中。您的主机可能需要为此进行配置。我会和你的主机核实一下,有时他们会为公共服务设置非标准端口,以绕过像你这样的问题。

    您也可以联系您的ISP,看看他们对此有何评论。他们可能会否认自己在做任何过滤,但值得一试。

        5
  •  0
  •   Steef    10 年前

        6
  •  0
  •   Revious    10 年前

    我意识到这个问题是特定于某个文件夹的。我进入文件夹,选择每个子文件夹,并尝试对每个文件夹执行更新命令(可以同时执行所有操作)。