我正在尝试从HP Alm的REST API获取一些数据。它与一个小的curl脚本配合得很好。我获取了我的数据。
现在,使用JavaScript、fetch和ES6(或多或少)似乎是一个更大的问题。我一直收到以下错误消息:
无法加载Fetch API。飞行前请求没有响应
通过访问控制检查:没有“access control Allow Origin”标头
存在于请求的资源上。原点'http://127.0.0.1:3000'是
因此不允许访问。响应的HTTP状态代码为501。
如果不透明的响应满足您的需求,请将请求的模式设置为
“no cors”无法在禁用cors的情况下获取资源。
我知道这是因为我试图从本地主机中获取数据,而解决方案应该使用
Cross-Origin Resource Sharing (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。我也尝试过使用Chrome CORS插件,但后来我收到了另一条错误消息:
响应中“Access Control Allow Origin”标头的值
当请求的凭据模式为
“include”。原点'http://127.0.0.1:3000因此不允许
通道由发起的请求的凭据模式
XMLHttpRequest由withCredentials属性控制。