使用重定向
本节示例可以参考示例文件"CaseStudy\WebViewer\拦截响应.Table"的窗口"重定向"。
重定向网页
我们之前已经介绍过,可以通过修改请求头重定向网页,例如在WebResourceRequested事件设置面的代码,会将对example.com的访问全部定向到百度:
Dim
wv
As
WebViewer = e.Sender.WebViewer
Dim
url
As
String
= e.Request.Uri.ToLower()
If
url.Contains("example.com")
Then
e.Response = wv.CoreWebView2.Environment.CreateWebResourceResponse(
content:=Nothing,
statusCode:=302,
reasonPhrase:="Found",
headers:="Location:
https://www.baidu.com")
End
If
上述代码的参数说明:
stream:=Nothing, ' 无响应流(重定向不需要)
statusCode:=302, ' 302临时重定向(301永久重定向)
reasonPhrase:="Found", ' 状态描述
headers:="Location: https://www.baidu.com" ' 重定向目标地址
重定向资源
也可以通过修改请求头,重定向单个资源,上一节我们介绍了访问远程图片的方法,其实通过重定向来实现更加简单可靠。
下面是上一节(访问远程图片)的重定向版本,代码要简洁很多:
Dim
wv
As
WebViewer = e.Sender.WebViewer
Dim
url
As
String
= e.Request.Uri.ToLower()
If
url.StartsWith("custom://chart/")
AndAlso
e.ResourceContext = CoreWebView2WebResourceContext.Image
Then
Dim
fl
As
String
= FileSys.GetName(url)
If
fl >
""
Then
fl =
"http://www.foxtable.com/image/"
& fl
e.Response = wv.CoreWebView2.Environment.CreateWebResourceResponse(Nothing,302,"Found","Location: "
& fl)
End
If
End
If