Vbscript 获得;“拒绝访问”;下载对象时

Vbscript 获得;“拒绝访问”;下载对象时,vbscript,xmlhttprequest,Vbscript,Xmlhttprequest,我正试图通过运行批处理脚本来下载svn客户端。为此,我使用了我从批处理文件调用的这段VBS。现在这段代码可以工作了,因为我已经成功下载了一些文件,但是当我尝试从sourceforge.net下载时,在send()之后收到一条拒绝访问错误消息。任何关于这种情况发生的原因和可以避免的洞察都会有所帮助 Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET", strFileURL, false objXMLHTTP.

我正试图通过运行批处理脚本来下载svn客户端。为此,我使用了我从批处理文件调用的这段VBS。现在这段代码可以工作了,因为我已经成功下载了一些文件,但是当我尝试从sourceforge.net下载时,在
send()
之后收到一条拒绝访问错误消息。任何关于这种情况发生的原因和可以避免的洞察都会有所帮助

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
do until objXMLHTTP.Status = 200 :  wscript.sleep(1000) :  loop 

If objXMLHTTP.Status = 200 Then
  Set objADOStream = CreateObject("ADODB.Stream")
  objADOStream.Open
  objADOStream.Type = 1 'adTypeBinary

  objADOStream.Write objXMLHTTP.ResponseBody
  objADOStream.Position = 0    'Set the stream position to the start

  Set objFSO = Createobject("Scripting.FileSystemObject")
    If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
  Set objFSO = Nothing

  objADOStream.SaveToFile strHDLocation
  objADOStream.Close
  Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

您的访问被拒绝,因为您试图从重定向您的URL下载文件。如果你试图直接下载一个文件,你会发现你不会得到错误

你应该使用最新版本

Set objXMLHTTP= CreateObject("Msxml2.XMLHttp.6.0")
但是使用

Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
…现在还可以


如果要在IE中将sourceforge.com添加到受信任的站点,请进入IE选项->安全,选择受信任的站点进入自定义级别,将“跨域访问数据源”更改为启用,这将使您超越拒绝访问错误。

到底哪一行引发了错误?确切的错误信息是什么,包括错误号?还要注意,
send
已经在等待请求完成,因为您将第三个参数设置为
False
,因此不需要循环。更糟糕的是,如果请求返回除200以外的任何状态,它将变成一个无限循环。错误:访问被拒绝。代码:80070005来源:msxml3.dll正常。但我想它并没有进入无限循环,因为错误在那之前就出现了。行号为send()。好的!除了更改IE选项之外,没有其他方法可以从这样的链接下载文件吗?实际上,批处理将在不同的计算机上运行,我无权更改ie设置。您仍然可以使用VBScript,但可以使用wget.exe,然后执行wget.exe。或者,从SourceForge下载该文件,将其移动到本地web服务器,然后通过您已有的脚本直接下载。