即使我使用适当的头设置服务器(nginx/node.js),我仍然遇到这个CORS问题.
我可以在Chrome网络窗格中看到 - >响应标题:
Access-Control-Allow-Origin:http://localhost
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
这是我现在用来测试的代码:
var xhr = new XMLHttpRequest();
xhr.onload = function() {
console.log('xhr loaded');
};
xhr.open('GET', 'http://stackoverflow.com/');
xhr.send();
Run Code Online (Sandbox Code Playgroud)
我明白了
XMLHttpRequest cannot load http://stackoverflow.com/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
我怀疑它是客户端脚本中的问题而不是服务器配置...
我对 REST 有点陌生..
为了全面公开,我在 Netlify Lambda 函数内运行此代码并通过 netlify-lambda 进行测试。
我的 curl 命令有效:
curl -u "<username>:<password>" https://api.github.com/repos/<username>/<reponame>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试通过 axios 获取请求时,我得到了 404(根据 github 文档,这意味着身份验证问题)。这就是我正在做的事情(如果没有自定义标题也不起作用,我只是在尝试一些随机的东西)。
axios({
method: "get",
url: `https://api.github.com/repos/${user}/<reponame>/`,
headers: {
Authorization: `Bearer ${githubToken}`,
"Content-Type": "application/json"
},
auth: {
username: user,
password: pass
}
})
.then(res => {
callback(null, {
statusCode: 200,
body: JSON.stringify(res.data)
});
})
.catch(err => {
callback(err);
});
Run Code Online (Sandbox Code Playgroud)
我注意到的一件事是 axios 似乎正在获取我的用户名和密码并将它们添加到 url ig https://<username>:<password>@api.github.com/repos/<username>/<reponame>
这是应该如何发送身份验证?