winhttp 访问https_asp程序使用Microsoft.XMLHTTP对象请求https时出错,使用WinHttp.WinHttpRequest.5.1解决...

p.s. 服务中需要开启 winhttp

出错程序代码示例:

代码strUrl = "https://www.xg98.com/test.jpg"

dim objXmlHttp

set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")

objXmlHttp.open "GET",strUrl,False

objXmlHttp.send()

替换为WinHttp.WinHttpRequest.5.1

代码strUrl = "https://www.xg98.com/test.jpg"

dim objXmlHttp

Set objXmlHttp= Server.CreateObject("WinHttp.WinHttpRequest.5.1")

objXmlHttp.Option(4) = 13056 '忽略错误标志

objXmlHttp.Option(6) = False

objXmlHttp.open "GET",strUrl,False

objXmlHttp.send()

WinHttp.WinHttpRequest.5.1 对象,它居然用可以成功伪造所有 http 请求的 header 信息!

从msdn得知,WinHttp.WinHttpRequest.5.1 是 msxml 4.0 的底层对象,也就是说 XMLHTTP/ServerXMLHTTP 也是在它的基础上封装而来,WinHttpRequest 的用法与 XmlHttp 大致相同。

WaitForResponse 在使用异步方式发送请求时,可以用这个方法来控制请求的进程,指定的等待时间,以秒为一个异步传送方法来完成的值,SetTimeouts。

在服务端脚本中,不可以像客户端那样直接使用回调函数来控制异步请求,也没有相应的函数来使用程序休眠一定的时间,因此,为了等待请求返回,我们可以使用这个方法来等待一定时间。

代码

Dim WinHttp

Set WinHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1")

'设置参数

WinHttp.SetTimeouts 60000, 60000, 60000, 3000 '设置操作超时时间

'WinHttp.SetTimeouts resolveTimeout, connectTimeout, sendTimeout, receiveTimeout

'resolveTimeout = 10000 '解析 DNS 名字的超时时间,10000 毫秒。

'connectTimeout = 10000 '建立 Winsock 连接的超时时间,10000 毫秒。

'sendTimeout = 120000 '发送数据的超时时间,120000 毫秒。

'receiveTimeout = 60000 '接收 response 的超时时间,60000 毫秒。

WinHttp.Option(4) = 13056 '忽略错误标志

WinHttp.Option(6) = False '为 True 时,当请求页面重定向跳转时自动跳转,False 不自动跳转,截取服务端返回的302状态。

WinHttp.Open "GET", "http://www.baidu.com/", False 'GET 或 POST, Url, False 同步方式;True 异步方式

'组成 HTTP 头信息

WinHttp.SetRequestHeader "Accept", "*/*" '接受数据类型

WinHttp.SetRequestHeader "Accept-Language", "zh-cn,zh" '用户系统语言

WinHttp.SetRequestHeader "User-Agent", "Mozilla/6.0" '用户浏览器信息

WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" '编码方式

WinHttp.SetRequestHeader "Referer", "http://www.baidu.com/" '来路

WinHttp.SetRequestHeader "Connection", "Close" 'Close = 不保持连接,Keep-Alive = 保持连接(持久连接)

'WinHttp.SetRequestHeader "Accept-Encoding", "gzip, deflate" '如果发送,会返回 gzip, deflate 压缩过的编码

'WinHttp.SetRequestHeader "Content-Length", Len(Str) '内容长度,Post 方式用的。

WinHttp.SetRequestHeader "Cookie", "test cookie!" '设置 Cookie

'发送数据

WinHttp.Send 'Post 方式:WinHttp.Send (参数)

WinHttp.WaitForResponse '等待返回请求,XMLHTTP中也可以使用

'输出结果

Response.Write WinHttp.Status '当前 HTTP 状态

'Response.Write WinHttp.ResponseText '文本数据

Response.BinaryWrite WinHttp.ResponseBody '二进制数据流数据

%>

[最后修改由 admin, 于 2020-09-22 16:42:18]

评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2715

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值