团队使用jira跟着任务进度,日常需扫描jira任务创建的规范,打算基于nodejs的jira-client做个页面,每天获取统计结果
jira-client用法:
npm install jira-client
import JiraApi from 'jira-client';
var jira = new JiraApi({
protocol: 'http',
host: xxx,
username: 'xxx',
password: 'xxx',
apiVersion: '2',
strictSSL: true,
});
let optional = {
startAt: 4000,
maxResults: 1,
fields: ['created','labels','summary'],
}
let searchString = "created >= '2022/01/01'" // 搜索创建日期在x之后的,需要用引号
const res = await jira.searchJira(searchString,optional)
this.content = res
问题:
jira.searchJira(searchString,optional) 的时候接口总是报错403,返回XSRF check failed
通过查询文档,发现jira请求可以通过用户名密码或者Authorization
请求头来实现请求,验证了search接口的请求头中 Authorization字段的值是username:password
的base64编码。于是在命令行发送curl命令
curl http://jira.cmss.com/rest/api/2/search -X POST -H "Authorization: Basic xxx" -H "Content-Type: application/json" -d '{
"jql":"project = YKJ"}'
成功获得了接口返回。而相同的接口和参数,在浏览器上却是403. 试过在headers中加“no token”也不行。通过搜索,发现相似解决,只要Overwrite the User-Agent String with some dummy value, and it will work
接下来就是在devTools中重写user-agent的操作了。在devTools中 ctrl+shift+p
打开命令菜单,输入network conditions
来打卡相关工具,给user-agent设置dummy value