如何从浏览器中查询gitlab API?
为了提供一些上下文,我想用gitlab页面实现一个blog,所以我想使用代码片段来存储文章和评论。问题是从浏览器查询API会触发CORS错误。以下是臭名昭著的代码:如何从浏览器中查询gitlab API?,gitlab,gitlab-api,Gitlab,Gitlab Api,为了提供一些上下文,我想用gitlab页面实现一个blog,所以我想使用代码片段来存储文章和评论。问题是从浏览器查询API会触发CORS错误。以下是臭名昭著的代码: const postJson=函数(url,正文){ const client=new XMLHttpRequest(); client.open('POST',url); setRequestHeader('Content-Type','application/json'); 返回新承诺((解决、拒绝)=>{ client.onr
const postJson=函数(url,正文){
const client=new XMLHttpRequest();
client.open('POST',url);
setRequestHeader('Content-Type','application/json');
返回新承诺((解决、拒绝)=>{
client.onreadystatechange=()=>{
if(client.readyState==4){
client.status==200
?解决(客户端响应文本)
:拒绝({状态:client.status,消息:client.statusText,响应:client.responseText})
}
}
client.send(body)
})
};
postJson('https://gitlab.com/api/graphql“,”查询{
项目(完整路径:“Boiethios/测试”){
片段{
节点{
标题
斑点{
罗帕斯
}
}
}
}
}`).然后(console.log,console.error);
这很有道理,因为它允许欺诈性地使用用户的会话
有几种选择:
- 理想情况下,我希望有一个选项来禁用所有形式的身份验证(特别是会话),因此我只能访问对每个人公开的信息
- 我可以使用个人访问令牌,但我对此并不满意,因为作用域根本不是细粒度的,泄漏这样的PAT将允许每个人都可以看到我帐户中的所有内容。(不起作用)
- 我可以使用OAuth2向每个读者请求访问其gitlab帐户的授权,但没有人希望通过身份验证来读取某些内容
- 我可以创建一个虚拟帐户,然后创建一个PAT。这是最好的,但这增加了一些不必要的复杂性。(不起作用)
从浏览器中查询gitlab API的正确方法是什么?经过一些研究,我找到了获取文章和评论的方法。CORS策略是由于带有JSON内容的POST请求而触发的。仅GET请求没有此限制 我可以在2次内恢复信息:
- 我创建了一个虚拟帐户,这样我就可以有一个令牌来查询API以获取我的公共信息
- 然后我使用了API V4而不是GraphQL:
// Gets the snippets information: fetch('https://gitlab.com/api/v4/projects/7835068/snippets?private_token=AmPeG6zykNxh1etM-hN3') .then(response => response.json()) .then(console.log); // Gets the comments of a snippet: fetch('https://gitlab.com/api/v4/projects/7835068/snippets/1742788/discussions?private_token=AmPeG6zykNxh1etM-hN3') .then(response => response.json()) .then(console.log);