我想对HP Alm Rest API进行授权,我认为这“应该”有效,但它没有:
function performSignIn(){
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password));
fetch(sign_in, {mode: 'no-cors', method:'POST', headers: headers})
.then(response => response.json())
.then(json => console.log(json))
.catch(error => console.log('Authorization failed : ' + error.message));
}
我收到一些奇怪的错误消息:
401(没有凭据找到请求。)
这是HP文档中的一个示例,使用XMLHttpRequest完成: http://alm-help.saas.hpe.com/de/12.53/api_refs/REST/webframe.htm#signin-out_example.htm
有什么想法吗?我没有看到什么是错的。
非常感谢!
祝你好运, 丹尼尔
答案 0 :(得分:2)
fetch(…)
不会发送凭据。您需要explicitly specify they should be sent:
fetch(sign_in, {credentials: 'include' , method:'POST', headers: headers})
.then(response => response.json())
.then(json => console.log(json))
.catch(error => console.log('Authorization failed : ' + error.message));
}
另外,顺便说一下,你绝对不想指定mode: 'no-cors'
。其效果是告诉浏览器,阻止我的前端JavaScript访问此请求的响应。
答案 1 :(得分:-1)
谢谢,这似乎有效!但关于'no-cors',我收到此错误消息:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://127.0.0.1:3000”访问。响应具有HTTP状态代码501.如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。
我认为'没有人'会有所帮助,但实际上却没有。