ServerXMLHTTP请求返回数据但301重定向后不返回最终页面的url
Posted
技术标签:
【中文标题】ServerXMLHTTP请求返回数据但301重定向后不返回最终页面的url【英文标题】:ServerXMLHTTP request returing data but not returning url of final page after 301 redirection 【发布时间】:2013-12-19 22:52:23 【问题描述】:我正在尝试在 ASP 中制作 LINK FINDER 应用程序它的工作分为 5 个步骤
-
向 www.foo.com 的服务器发送 http 请求
检查请求状态
如果是 200 则转到第 4 步,否则显示错误
解析所有链接
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 em>
我正在获取重定向页面的 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 中的链接查找器的任何其他想法
【问题讨论】:
【参考方案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
【讨论】:
gr88888.... 我想知道的一件事。为什么你定义了两个常量? 我还可以跟踪从 请求的 url 到最终 url 的所有重定向吗? @Dr_Dang 枚举常量列在goo.gl/b4817X 下的常量部分,分别从零开始。如果你不使用它们,当然你也可以使用数值。是的,您可以跟踪。使用 req.Status 禁用重定向并处理3xx
状态,然后使用 req.GetResponseHeader("Location")
通过给定 Location 标头获取 url。
我无法使用 WinHttp.WinHttpRequest.5.1 对象事件。我还在***.com/questions/20552183 上发布了有关此问题的问题@ 我需要回调函数来处理异步 http 请求。以上是关于ServerXMLHTTP请求返回数据但301重定向后不返回最终页面的url的主要内容,如果未能解决你的问题,请参考以下文章