我正在创建一个web react服务,它需要IBM个性洞察服务。记录在这里
这是我的要求
var test = "some string";
var myHeaders = new Headers();
myHeaders.append("authorization",config.ibmCredential);
myHeaders.append("Content-type", "text/plain");
myHeaders.append("Accept", "application/json");
myHeaders.append("Access-Control-Allow-Origin","*");
var myRequest = { method: 'POST', headers: myHeaders, body: test}我称之为:
async postData() {
const data = await fetch(`${config.ibmURL}`,myRequest);Firefox控制台给我的结果是:
跨源请求被阻止:相同的原产地策略不允许在
https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2018-10-20上读取远程资源。(原因: CORS机头“访问-控制-允许-报头”中缺少令牌“访问-控制-允许-原点”)。
我还试着用获取要使用的令牌发送凭证。然而,Firefox控制台只提供给我这个,我不知道它是什么,也不知道如何使用它。
跨源请求被阻止:相同的原产地策略不允许在
https://gateway.watsonplatform.net/authorization/api/v1/token?url=https://gateway.watsonplatform.net/personality-insights/api.上读取远程资源(原因: CORS标题‘访问-控制-允许-原产地’丢失)。
*请注意,这两项要求均与邮递员合作良好。
发布于 2017-07-13 16:39:03
sideshowbarker注释是正确的-您的不希望设置Access-Control-Allow-Origin头;对于所有CORS请求都是这样。
此外,对于Watson CORS请求,您不能设置Authorization头,因为这会将您的私有凭据泄漏给您的最终用户。
相反,您必须使用Auth令牌,这需要少量的服务器端代码.
您的服务器端代码使用您的私有凭据发出请求,然后获得一个可以公开给客户端的临时令牌。客户端将其设置为X-Watson-Authorization-Token头或watson-token查询字符串param。
请注意,令牌是url编码的,所以如果在querystring中使用令牌,您应该注意不要对它进行双重编码。
通常,我建议在可能的情况下使用SDK --您可以结合webpack和Persionality Insight示例来实现从客户端代码中使用人格洞察的目标。
https://stackoverflow.com/questions/45031763
复制相似问题