最佳答案
我正在尝试从HP Alm的REST API获取一些数据。它与一个小curl脚本一起工作得很好-我得到了我的数据。
现在使用JavaScript、get和ES6(或多或少)执行此操作似乎是一个更大的问题。我不断收到此错误消息:
无法加载获取API。对飞行前请求的响应不会权限改造检查:无Access-Control-Allow-Origin标头存在于请求的资源上。源“http://127.0.0.1:3000”是因此不允许访问。响应的HTTP状态代码为501。如果不透明响应满足您的需求,请将请求的模式设置为'no-cors'在禁用CORS的情况下获取资源。
我明白这是因为我试图从我的localhost中获取数据,解决方案应该使用跨域资源共享(CORS)。我以为我真的做到了,但不知何故,它要么忽略了我在标头中写的内容,要么问题是别的。
那么,是不是实现有问题?我做错了吗?不幸的是,我无法检查服务器日志。我真的有点卡住了。
function performSignIn() {
let headers = new Headers();
headers.append('Content-Type', 'application/json');headers.append('Accept', 'application/json');
headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');headers.append('Access-Control-Allow-Credentials', 'true');
headers.append('GET', 'POST', 'OPTIONS');
headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password));
fetch(sign_in, {//mode: 'no-cors',credentials: 'include',method: 'POST',headers: headers}).then(response => response.json()).then(json => console.log(json)).catch(error => console.log('Authorization failed : ' + error.message));}
我正在使用Chrome。我也尝试使用该ChromeCORS插件,但随后我收到另一条错误消息:
响应中“Access-Control-Allow-Origin”标头的值当请求的凭据模式为时,不得是通配符“*”“包含”。因此不允许原产地为“http://127.0.0.1:3000”访问。由XMLHttpRequest由With Cre的属性控制。