Ali*_*Dbg 4 vbscript header xmlhttprequest
为什么这个 .vbs 脚本检索空值?
Option Explicit
On Error Resume Next
Dim h: Set h = CreateObject("MSXML2.XMLHTTP")
h.Open "HEAD", "http://google.com/", False
h.send
Dim GetLocation: Set GetLocation = h.getResponseHeader("Location")
MsgBox GetLocation
Run Code Online (Sandbox Code Playgroud)
几乎所有 HTTP 库默认都遵循重定向。因此,只要遵循重定向,
就无法获取标头,因此需要停止遵循重定向。
我推荐两种不同的解决方案。Location
#1获得最终 url 将是最简单的方法,而不是获取Locationheader。
Option Explicit
Dim GetLocation
Const SXH_OPTION_URL = -1
Dim h
Set h = CreateObject("MSXML2.ServerXMLHTTP")
h.Open "HEAD", "http://google.com/", False
h.send
GetLocation = h.getOption(SXH_OPTION_URL) 'final URL even if redirected
MsgBox GetLocation
Run Code Online (Sandbox Code Playgroud)
#2如果您想确保获得第一个 Location标头(而不是重定向链中的最后一个链接),您应该通过禁用重定向来使用WinHttpRequest,这样您就可以获取标头(如果可用)。
Option Explicit
Dim GetLocation
Const WHR_EnableRedirects = 6
Dim h
Set h = CreateObject("WinHttp.WinHttpRequest.5.1")
h.Option(WHR_EnableRedirects) = False 'disable redirects
h.Open "HEAD", "http://google.com/", False
h.Send
GetLocation = h.GetResponseHeader("Location") 'an error occurs if not exist
MsgBox GetLocation
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13482 次 |
| 最近记录: |