ServerXMLHTTP请求返回数据但在301重定向后没有返回最终页面的url

时间:2013-12-03 18:16:46

标签: vb.net asp-classic http-status-code-301 http-redirect serverxmlhttp

我正在尝试在ASP中制作LINK FINDER应用程序 它的工作分为5步

  1. 在www.foo.com
  2. 上向服务器发送http请求
  3. 检查请求状态
  4. 如果是200然后转到第4步,否则显示错误
  5. 解析所有链接
  6. Send http request to server to parsed link
  7. 我能够做到第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内容,但是没有重定向网址,也无法检查第三类链接

    使用以下代码

    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

    中的链接查找器的想法

1 个答案:

答案 0 :(得分:3)

它不属于ServerXMLHTTP功能 相反,您必须使用IWinHttpRequest或其他能够管理重定向的第三方组件 在以下示例中,即使重定向,req.Option(WHR_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