ServerXMLHTTP的要求returing数据,但后301重定向没有返回最终页面的网址(Ser

2019-10-19 02:33发布

我试图在ASP LINK FINDER应用
它的工作分为5个步骤

  1. 发送HTTP请求到服务器在www.foo.com
  2. 检查的请求状态
  3. 如果其200然后移动到第4步,否则显示错误
  4. 分析所有链接
  5. Send http request to server to parsed link

我可以先做4步,但在面对第5步挑战

我得到3类型的链接

1)绝对链接: http://www.foo.com/file.asp
2)从根目录链接,这就需要域名如/folder2/file2.asp
3.)相链接:../file3.asp

挑战

当我请求www.foo.com,这是301重定向www.foo.com/folder3/folder3/file3.asp

我得到重定向页面的HTML内容,不过不要让重定向的URL,而不是能够检查第三类型的链接

使用下面的代码

 Set ServerXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") ServerXmlHttp.open "GET", "http://www.foo.com" ServerXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" ServerXmlHttp.send PostData If ServerXmlHttp.status = 200 Then //My CODE 

希望快速响应......或在ASP链接取景任何其他的想法,vb.net

Answer 1:

这是出了ServerXMLHTTP的能力。
相反,你必须使用IWinHttpRequest或其他第三方组件,它能够管理重定向。
在以下示例中, req.Option(WHR_URL)返回即使重定向当前的URL。
选项req.option(WHR_EnableRedirects)True默认像ServerXMLHTTP的。
所以,我添加注释掉展示如何禁用重定向线。

Const WHR_URL = 1
Const WHR_EnableRedirects = 6
'Enum constants are listed at http://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx
Dim req
Set req = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
    'req.Option(WHR_EnableRedirects) = False 'don't follow the redirects
    req.open "GET", "http://www.foo.com", False
    req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    req.send PostData
If req.Status = 200 Then
    Response.Write "Last URL : " & req.Option(WHR_URL)
End If


文章来源: ServerXMLHTTP request returing data but not returning url of final page after 301 redirection