【发布时间】: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