【问题标题】:Unable to upload a github asset using Javascript无法使用 Javascript 上传 github 资产
【发布时间】:2022-08-11 07:29:57
【问题描述】:

概述

我正在尝试使用 Javascript 获取请求将资产上传到 github。它在邮递员中工作

邮差

错误

但是在javascript中我得到了这个错误

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://uploads.github.com/repos/{owner}/{repo}/releases/{id}/assets?name=windows.zip. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 400. 

我已经为此工作了几天了...
提前致谢

Javascript代码

async function OpenFile() {
    let input = document.createElement(\"input\")
    input.type = \"file\";
    input.accept = \"application/zip\";
    input.addEventListener(\"change\", async e => {
        let file = e.currentTarget.files[0];
        let reader = new FileReader();

        reader.addEventListener(\'load\', () => {
            let content = reader.result;

            let myHeaders = new Headers();
            myHeaders.append(\"Authorization\", `token *****`);
            myHeaders.append(\"Content-Type\", \"application/zip\");
            myHeaders.append(\"Accept\", \"application/vnd.github+json\");

            let requestOptions = {
                method: \'POST\',
                headers: myHeaders,
                body: content,
                mode: \'cors\'
            };
            fetch(`https://uploads.github.com/repos/{OWNER}/{REPO}/releases/{ID}/assets?name=file.zip`, requestOptions)
                .then(response => response.json())
                .then(json => {
                    console.log(JSON.stringify(json))
                }).catch(error => { console.log(error) })
        }, false)
        reader.readAsArrayBuffer(file)

    })
    input.click();
}

附: 我从网址中删除了敏感信息

编辑:

Github API 声明你应该可以使用它

// Octokit.js
// https://github.com/octokit/core.js#readme
const octokit = new Octokit({
  auth: \'personal-access-token123\'
})

await octokit.request(\'POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\', {
  owner: \'OWNER\',
  repo: \'REPO\',
  release_id: \'RELEASE_ID\'
})

或者

var myHeaders = new Headers();
myHeaders.append(\"Authorization\", \"token ******\");
myHeaders.append(\"Content-Type\", \"application/zip\");

var file = \"<file contents here>\";

var requestOptions = {
  method: \'POST\',
  headers: myHeaders,
  body: file,
  redirect: \'follow\'
};

fetch(\"https://uploads.github.com/repos/{OWNER}/{REPO}/releases/{ID}/assets?name=file.zip\", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log(\'error\', error));
  • 我怀疑你可以从浏览器中做到这一点

标签: javascript networking github-api http-status-code-400


【解决方案1】:

在错误中显示(Reason: CORS header ‘Access-Control-Allow-Origin’ missing)。您可以将其添加到 fetch 请求中:

myHeaders.append("Access-Control-Allow-Origin", "your-website-url");

或者,

myHeaders.append("Access-Control-Allow-Origin", "*");

参考:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at

【讨论】:

  • 我尝试过......不幸的是我得到了同样的错误......
猜你喜欢
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
相关资源
最近更新 更多