如何从浏览器中查询gitlab API?

如何从浏览器中查询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

为了提供一些上下文,我想用gitlab页面实现一个blog,所以我想使用代码片段来存储文章和评论。问题是从浏览器查询API会触发CORS错误。以下是臭名昭著的代码:

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);
    

您可以添加更多详细信息吗?它是由gitlab页面托管的静态站点吗?你想在静态站点上执行客户端逻辑吗?@ShashankV是的,该页面由gitlab页面托管,因此整个站点是静态的&因此我无法在服务器端调用API。