Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
e55ffa0b
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
e55ffa0b
编写于
3月 04, 2023
作者:
O
openharmony_ci
提交者:
Gitee
3月 04, 2023
浏览文件
操作
浏览文件
下载
差异文件
!15435 【新增特性】web子系统新增getCertificate接口文档
Merge pull request !15435 from JunMao/master
上级
0571308e
6a702dac
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
314 addition
and
0 deletion
+314
-0
zh-cn/application-dev/reference/apis/js-apis-webview.md
zh-cn/application-dev/reference/apis/js-apis-webview.md
+314
-0
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-webview.md
浏览文件 @
e55ffa0b
...
...
@@ -3258,6 +3258,320 @@ struct WebComponent {
}
```
### getCertificate<sup>10+</sup>
getCertificate(): Promise
<Array
<
cert.X509Cert
>
>
获取当前网站的证书信息。使用web组件加载https网站,会进行SSL证书校验,该接口会通过Promise异步返回当前网站的X509格式证书(X509Cert证书类型定义见
[
X509Cert定义
](
./js-apis-cert.md
)
),便于开发者展示网站证书信息。
**系统能力:**
SystemCapability.Web.Webview.Core
**返回值:**
| 类型 | 说明 |
| ---------- | --------------------------------------------- |
| Promise
<Array
<
cert.X509Cert
>
> | Promise实例,用于获取当前加载的https网站的X509格式证书数组。 |
**错误码:**
以下错误码的详细介绍请参见
[
webview错误码
](
../errorcodes/errorcode-webview.md
)
。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 17100001 | Init error. The WebviewController must be associated with a Web component. |
**示例:**
```
ts
// xxx.ets
import
web_webview
from
'
@ohos.web.webview
'
;
function
Uint8ArrayToString
(
dataArray
)
{
var
dataString
=
''
for
(
var
i
=
0
;
i
<
dataArray
.
length
;
i
++
)
{
dataString
+=
String
.
fromCharCode
(
dataArray
[
i
])
}
return
dataString
}
function
ParseX509CertInfo
(
x509CertArray
)
{
let
res
:
string
=
'
getCertificate success: len =
'
+
x509CertArray
.
length
;
for
(
let
i
=
0
;
i
<
x509CertArray
.
length
;
i
++
)
{
res
+=
'
, index =
'
+
i
+
'
, issuer name =
'
+
Uint8ArrayToString
(
x509CertArray
[
i
].
getIssuerName
().
data
)
+
'
, subject name =
'
+
Uint8ArrayToString
(
x509CertArray
[
i
].
getSubjectName
().
data
)
+
'
, valid start =
'
+
x509CertArray
[
i
].
getNotBeforeTime
()
+
'
, valid end =
'
+
x509CertArray
[
i
].
getNotAfterTime
()
}
return
res
}
@
Entry
@
Component
struct
Index
{
// outputStr在UI界面显示调试信息
@
State
outputStr
:
string
=
''
webviewCtl
:
web_webview
.
WebviewController
=
new
web_webview
.
WebviewController
();
build
()
{
Row
()
{
Column
()
{
List
({
space
:
20
,
initialIndex
:
0
})
{
ListItem
()
{
Button
()
{
Text
(
'
load bad ssl
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
// 加载一个过期的证书网站,查看获取到的证书信息
this
.
webviewCtl
.
loadUrl
(
'
https://expired.badssl.com
'
)
})
.
height
(
50
)
}
ListItem
()
{
Button
()
{
Text
(
'
load example
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
// 加载一个https网站,查看网站的证书信息
this
.
webviewCtl
.
loadUrl
(
'
https://www.example.com
'
)
})
.
height
(
50
)
}
ListItem
()
{
Button
()
{
Text
(
'
getCertificate Promise
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
try
{
this
.
webviewCtl
.
getCertificate
().
then
(
x509CertArray
=>
{
this
.
outputStr
=
ParseX509CertInfo
(
x509CertArray
);
})
}
catch
(
error
)
{
this
.
outputStr
=
'
getCertificate failed:
'
+
error
.
code
+
"
, errMsg:
"
+
error
.
message
;
}
})
.
height
(
50
)
}
ListItem
()
{
Button
()
{
Text
(
'
getCertificate AsyncCallback
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
try
{
this
.
webviewCtl
.
getCertificate
((
error
,
x509CertArray
)
=>
{
if
(
error
)
{
this
.
outputStr
=
'
getCertificate failed:
'
+
error
.
code
+
"
, errMsg:
"
+
error
.
message
;
}
else
{
this
.
outputStr
=
ParseX509CertInfo
(
x509CertArray
);
}
})
}
catch
(
error
)
{
this
.
outputStr
=
'
getCertificate failed:
'
+
error
.
code
+
"
, errMsg:
"
+
error
.
message
;
}
})
.
height
(
50
)
}
}
.
listDirection
(
Axis
.
Horizontal
)
.
height
(
'
10%
'
)
Text
(
this
.
outputStr
)
.
width
(
'
100%
'
)
.
fontSize
(
10
)
Web
({
src
:
'
https://www.example.com
'
,
controller
:
this
.
webviewCtl
})
.
fileAccess
(
true
)
.
javaScriptAccess
(
true
)
.
domStorageAccess
(
true
)
.
onlineImageAccess
(
true
)
.
onPageEnd
((
e
)
=>
{
this
.
outputStr
=
'
onPageEnd : url =
'
+
e
.
url
})
.
onSslErrorEventReceive
((
e
)
=>
{
// 忽略ssl证书错误,便于测试一些证书过期的网站,如:https://expired.badssl.com
e
.
handler
.
handleConfirm
()
})
.
width
(
'
100%
'
)
.
height
(
'
70%
'
)
}
.
height
(
'
100%
'
)
}
}
}
```
### getCertificate<sup>10+</sup>
getCertificate(callback: AsyncCallback
<Array
<
cert.X509Cert
>
>): void
获取当前网站的证书信息。使用web组件加载https网站,会进行SSL证书校验,该接口会通过AsyncCallback异步返回当前网站的X509格式证书(X509Cert证书类型定义见
[
X509Cert定义
](
./js-apis-cert.md
)
),便于开发者展示网站证书信息。
**系统能力:**
SystemCapability.Web.Webview.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ---------------------------- | ---- | ---------------------------------------- |
| callback | AsyncCallback
<Array
<
cert.X509Cert
>
> | 是 | 通过AsyncCallback异步返回当前网站的X509格式证书。 |
**错误码:**
以下错误码的详细介绍请参见
[
webview错误码
](
../errorcodes/errorcode-webview.md
)
。
| 错误码ID | 错误信息 |
| -------- | ------------------------------------------------------------ |
| 17100001 | Init error. The WebviewController must be associated with a Web compoent. |
**示例:**
```
ts
// xxx.ets
import
web_webview
from
'
@ohos.web.webview
'
;
function
Uint8ArrayToString
(
dataArray
)
{
var
dataString
=
''
for
(
var
i
=
0
;
i
<
dataArray
.
length
;
i
++
)
{
dataString
+=
String
.
fromCharCode
(
dataArray
[
i
])
}
return
dataString
}
function
ParseX509CertInfo
(
x509CertArray
)
{
let
res
:
string
=
'
getCertificate success: len =
'
+
x509CertArray
.
length
;
for
(
let
i
=
0
;
i
<
x509CertArray
.
length
;
i
++
)
{
res
+=
'
, index =
'
+
i
+
'
, issuer name =
'
+
Uint8ArrayToString
(
x509CertArray
[
i
].
getIssuerName
().
data
)
+
'
, subject name =
'
+
Uint8ArrayToString
(
x509CertArray
[
i
].
getSubjectName
().
data
)
+
'
, valid start =
'
+
x509CertArray
[
i
].
getNotBeforeTime
()
+
'
, valid end =
'
+
x509CertArray
[
i
].
getNotAfterTime
()
}
return
res
}
@
Entry
@
Component
struct
Index
{
// outputStr在UI界面显示调试信息
@
State
outputStr
:
string
=
''
webviewCtl
:
web_webview
.
WebviewController
=
new
web_webview
.
WebviewController
();
build
()
{
Row
()
{
Column
()
{
List
({
space
:
20
,
initialIndex
:
0
})
{
ListItem
()
{
Button
()
{
Text
(
'
load bad ssl
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
// 加载一个过期的证书网站,查看获取到的证书信息
this
.
webviewCtl
.
loadUrl
(
'
https://expired.badssl.com
'
)
})
.
height
(
50
)
}
ListItem
()
{
Button
()
{
Text
(
'
load example
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
// 加载一个https网站,查看网站的证书信息
this
.
webviewCtl
.
loadUrl
(
'
https://www.example.com
'
)
})
.
height
(
50
)
}
ListItem
()
{
Button
()
{
Text
(
'
getCertificate Promise
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
try
{
this
.
webviewCtl
.
getCertificate
().
then
(
x509CertArray
=>
{
this
.
outputStr
=
ParseX509CertInfo
(
x509CertArray
);
})
}
catch
(
error
)
{
this
.
outputStr
=
'
getCertificate failed:
'
+
error
.
code
+
"
, errMsg:
"
+
error
.
message
;
}
})
.
height
(
50
)
}
ListItem
()
{
Button
()
{
Text
(
'
getCertificate AsyncCallback
'
)
.
fontSize
(
10
)
.
fontWeight
(
FontWeight
.
Bold
)
}
.
type
(
ButtonType
.
Capsule
)
.
onClick
(()
=>
{
try
{
this
.
webviewCtl
.
getCertificate
((
error
,
x509CertArray
)
=>
{
if
(
error
)
{
this
.
outputStr
=
'
getCertificate failed:
'
+
error
.
code
+
"
, errMsg:
"
+
error
.
message
;
}
else
{
this
.
outputStr
=
ParseX509CertInfo
(
x509CertArray
);
}
})
}
catch
(
error
)
{
this
.
outputStr
=
'
getCertificate failed:
'
+
error
.
code
+
"
, errMsg:
"
+
error
.
message
;
}
})
.
height
(
50
)
}
}
.
listDirection
(
Axis
.
Horizontal
)
.
height
(
'
10%
'
)
Text
(
this
.
outputStr
)
.
width
(
'
100%
'
)
.
fontSize
(
10
)
Web
({
src
:
'
https://www.example.com
'
,
controller
:
this
.
webviewCtl
})
.
fileAccess
(
true
)
.
javaScriptAccess
(
true
)
.
domStorageAccess
(
true
)
.
onlineImageAccess
(
true
)
.
onPageEnd
((
e
)
=>
{
this
.
outputStr
=
'
onPageEnd : url =
'
+
e
.
url
})
.
onSslErrorEventReceive
((
e
)
=>
{
// 忽略ssl证书错误,便于测试一些证书过期的网站,如:https://expired.badssl.com
e
.
handler
.
handleConfirm
()
})
.
width
(
'
100%
'
)
.
height
(
'
70%
'
)
}
.
height
(
'
100%
'
)
}
}
}
```
## WebCookieManager
通过WebCookie可以控制Web组件中的cookie的各种行为,其中每个应用中的所有web组件共享一个WebCookieManager实例。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录