• Home
Name Date Size #Lines LOC

..--

AppScope/22-Oct-2025-4239

entry/22-Oct-2025-1,4131,062

hvigor/22-Oct-2025-3836

screenshots/22-Oct-2025-

.gitignoreD22-Oct-2025133 1212

README.mdD22-Oct-20257.6 KiB188120

build-profile.json5D22-Oct-20251.2 KiB5351

code-linter.json5D22-Oct-20251.4 KiB4646

hvigorfile.tsD22-Oct-2025843 225

oh-package.json5D22-Oct-2025810 2624

ohosTest.mdD22-Oct-2025325 53

README.md

1# 拦截Web组件发起的网络请求
2
3### 介绍
4
51. 本示例通过使用arkweb_scheme_handler.h相关API实现对Web组件发出的请求进行拦截,并为被拦截的请求提供自定义的响应头以及响应体。
62. 本工程主要实现了对以下指南文档中 https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/web/web-scheme-handler.md 示例代码片段的工程化,主要目标是实现指南中示例代码需要与sample工程文件同源。
7
8### 主页
9
101. 本示例通过使用arkweb_scheme_handler.h相关API实现对Web组件发出的请求进行拦截,并为被拦截的请求提供自定义的响应头以及响应体。
11
12#### 效果预览
13
14|                   主页                   |
15|:----------------------:|
16| <img src="./screenshots/home.png" width="360;" /> |
17
18#### 使用说明
19
201. 打开DEMO进入首页,展示html。
212. 点击各链接进入不同属性的拦截结果页面或读取结果页面。
22
23### 拦截视频资源
24
25#### 介绍
26
271. 此处模块主要介绍通过Web组件,拦截视频资源请求,读取本地mp4文件。
28
29#### 效果预览
30
31| 拦截视频资源                                                   |
32| ------------------------------------------------------------ |
33| <img src="./screenshots/mp4.png" width="360;" /> |
34
35#### 使用说明
36
371. 通过点击主页的“拦截视频资源请求,读取本地mp4文件”链接,拦截页面请求并跳转到此页面并展示本地的mp4文件。
38
39### 忽略csp检查并拦截
40
41#### 介绍
42
431. 此处模块主要介绍通过Web组件,测试三方协议忽略csp检查,并成功拦截。
44
45#### 效果预览
46
47| 忽略csp检查并拦截                                                 |
48| ------------------------------------------------------------ |
49| <img src="./screenshots/csp.png" width="360;" /> |
50
51#### 使用说明
52
531. 通过点击主页的“测试三方协议忽略csp检查,并成功拦截”链接,展示被拦截的自定义scheme请求,该scheme需要遵循标准的scheme规则,允许忽略CSP检查。
542. 如果要拦截自定义scheme的请求,需要提前将自定义scheme注册到Web内核。需要在Web组件初始化之前进行注册,Web组件初始化后再注册会失败。
55
56### 拦截ISOLATED属性
57
58#### 介绍
59
601. 此处模块主要介绍通过Web组件,测试拦截设置ISOLATED属性的三方协议。
61
62#### 效果预览
63
64| 拦截ISOLATED属性                                                  |
65| ------------------------------------------------------------ |
66| <img src="./screenshots/ISOLATED.png" width="360;" /> |
67
68#### 使用说明
69
701. 通过点击主页的“测试拦截设置ISOLATED属性的三方协议”链接,展示被拦截的带有ISOLATED属性的自定义scheme请求,该scheme的请求必须从相同scheme加载的网页中发起。
712. 如果要拦截自定义scheme的请求,需要提前将自定义scheme注册到Web内核。需要在Web组件初始化之前进行注册,Web组件初始化后再注册会失败。
72
73### 拦截LOCAL属性
74
75#### 介绍
76
771. 此处模块主要介绍通过Web组件,测试拦截设置LOCAL属性的三方协议。
78
79#### 效果预览
80
81| 拦截LOCAL属性                                              |
82| ------------------------------------------------------------ |
83| <img src="./screenshots/LOCAL.png" width="360;" /> |
84
85#### 使用说明
86
871. 通过点击主页的“测试拦截设置LOCAL属性的三方协议”链接,展示被拦截的带有LOCAL属性的自定义scheme请求,该scheme需要遵循与“file” scheme一样的规则。
882. 如果要拦截自定义scheme的请求,需要提前将自定义scheme注册到Web内核。需要在Web组件初始化之前进行注册,Web组件初始化后再注册会失败。
89
90### 拦截service worker
91
92#### 介绍
93
941. 此处模块主要介绍通过Web组件,测试拦截service worker触发的请求。
95
96#### 效果预览
97
98| 拦截service worker                                              |
99| ------------------------------------------------------------ |
100| <img src="./screenshots/service_worker.png" width="360;" /> |
101
102#### 使用说明
103
1041. 通过点击主页的“测试拦截service worker触发的请求”链接,展示被拦截的Web组件发出的scheme为“custom”的请求。
1052. 如果要拦截自定义scheme的请求,需要提前将自定义scheme注册到Web内核。需要在Web组件初始化之前进行注册,Web组件初始化后再注册会失败。
106
107### 测试读取blob类型http body stream
108
109#### 介绍
110
1111. 此处模块主要介绍通过Web组件,测试读取blob类型http body stream。
112
113#### 效果预览
114
115| 测试读取blob类型http body stream                                              |
116| ------------------------------------------------------------ |
117| <img src="./screenshots/blob.png" width="360;" /> |
118
119#### 使用说明
120
1211. 通过点击主页的“测试读取blob类型http body stream”链接,跳转至post_data.html,通过"test xhr post"或"test xhr put"按键,创建blob类型的对应请求,并发送至服务端,在设备日志中可查看发送结果。
122
123### 测试读取chunked类型http body stream
124
125#### 介绍
126
1271. 此处模块主要介绍通过Web组件,测试读取chunked类型http body stream。
128
129#### 效果预览
130
131| 测试读取chunked类型http body stream                                          |
132| ------------------------------------------------------------ |
133| <img src="./screenshots/chunked.png" width="360;" /> |
134
135#### 使用说明
136
1371. 通过点击主页的“测试读取chunked类型http body stream”链接,跳转至pchunked_post_stream.html,通过"test post chunked http body"按键,创建chunked类型的请求,并以POST方式发送至服务端,在设备日志中可查看发送结果。
138
139### 工程目录
140
141
142```
143├── entry
144│   └── src
145│       └── main
146│           ├── cpp                                 // C++代码区
147│           │   ├── CMakeLists.txt                  // CMAKE配置文件
148│           │   ├── hello.cpp                       // Native业务代码实现
149│           │   ├── rawfile_request.cpp             // RawfileRequest实现
150│           │   ├── rawfile_request.h               // RawfileRequest类
151│           │   └── types
152│           │       └── libentry                    // C++接口导出
153│           │           ├── Index.d.ts
154│           │           └── oh-package.json5
155│           ├── ets                                 // ArkTS代码区
156│           │   ├── entryability
157│           │   │   └── EntryAbility.ets            // 入口类
158│           │   ├── entrybackupability
159│           │   │   └── EntryBackupAbility.ets      // 备份恢复框架
160│           │   └── pages
161│           │       └── Index.ets                   // 主页
162│           └── resources                           // 应用资源文件
163```
164### 相关权限
165
166[ohos.permission.INTERNET](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet)
167
168### 依赖
169
170不涉及。
171
172### 约束与限制
173
1741. 本示例仅支持标准系统上运行,支持设备:RK3568。
1752. 本示例支持API14版本SDK,SDK版本号(API Version 14 Release)。
1763. 本示例需要使用DevEco Studio 版本号(5.0.1Release)才可编译运行。
177
178### 下载
179
180如需单独下载本工程,执行如下命令:
181
182```
183git init
184git config core.sparsecheckout true
185echo code/DocsSample/ArkWeb/ArkWebSchemeHandler > .git/info/sparse-checkout
186git remote add origin https://gitee.com/openharmony/applications_app_samples.git
187git pull origin master
188```