jquery - Kendo-UI 在传输中包含不记名令牌
问题描述
我正在使用 Kendo-UI 在 ListView 中显示数据。在配置中,我有这样的 DataSource 设置:
dataSource: {
transport: {
read: {
contentType: 'application/json',
dataType: 'json',
type: 'GET',
url: '/server/api/user/query.php/'
}
},
pageSize: 20,
schema: {
data: 'records',
id: 'UserId',
model: {
UserId: { editable: false, nullable: true },
FirstName: { validation: { required: true } },
LastName: { validation: { required: true } },
Email: { validation: { required: true } },
CreatedOn: { editable: false, type: 'date' },
CreatedBy: { editable: false, type: 'number' },
CreatedByFullName: { editable: false },
ModifiedOn: { editable: false, type: 'date' },
ModifiedBy: { editable: false, type: 'number' },
ModifiedByFullName: { editable: false },
DeletedOn: { editable: false, type: 'date' }
},
total: 'total'
}
}
但是,我需要指定 AJAX 请求的标头,特别是我需要使用以下内容在授权标头中设置不记名令牌:
headers: {
'Authorization': `Bearer ${utility.getJsonWebToken()}`
}
查看 DataSource 的 Transport 属性的文档(此处),我看不到在哪里可以指定任何标头。
解决方案
其他几个解决方案,因为不需要$.ajax
调用:
数据源使用 jQuery.ajax 向远程服务发出 HTTP 请求。通过 transport.read 配置的值被传递给 jQuery.ajax。这意味着您可以通过 transport.read 设置 jQuery.ajax 支持的所有选项,除了传输使用的成功和错误回调函数。
您可以执行以下操作:
transport: {
read: {
contentType: 'application/json',
dataType: 'json',
type: 'GET',
url: '/server/api/user/query.php/',
headers: {
'Authorization': 'Bearer ' + utility.getJsonWebToken()
},
}
},
或者
transport: {
read: {
contentType: 'application/json',
dataType: 'json',
type: 'GET',
url: '/server/api/user/query.php/',
beforeSend: beforeSend,
}
},
...
function beforeSend(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + utility.getJsonWebtoken());
}
推荐阅读
- mysql - Apache calcite:解析失败:遇到“来自\””
- python - 使用 Python 从 pdf 文件中提取文本
- c# - 如何更改 SPListItem.Level 属性?
- javascript - 如何以编程方式从另一个组件触发标记组件事件
- java - Spring-Boot 应用程序不尊重 -Dloader.path
- javascript - 如何在处理结果之前等待结果?
- python - 以运算符为参数的函数
- bash - How to generate output to a folder in bash shell
- apache - Apache 不能同时使用 SSL 运行两个虚拟主机
- python - 获取数据帧行中 n 个最大绝对值的索引