【问题标题】:Request header field apikey is not allowed by Access-Control-Allow-Headers in preflight response [duplicate]预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 apikey [重复]
【发布时间】:2018-12-29 06:04:12
【问题描述】:

我正在尝试用javascript代码(fetch api)测试IBM watson的音调分析器

这是我的代码:

异步发布(url,key,textData) {

const response1 = await fetch(`https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&statements=false`,{
    method: 'POST',
    headers: 
    {
        'Content-type': 'application/json',
        'apikey':'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    },
    body: JSON.stringify(textData)
});

const responseData = await response1.json();
return responseData;
console.log(responseData);
}

现在,这个特定的代码抛出错误:

加载失败 https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21&statements=false: 请求头字段 apikey 不允许 预检响应中的 Access-Control-Allow-Headers。

我使用邮递员工具检查了这个,它工作正常。

我在使用 XMLHttpRequest 时遇到了与 https://openweathermap.org/api 类似的问题,并且在使用 fetch 时没有再次发生。

我能指点一下吗 1)邮递员和简单的javascript代码有什么区别? 2) 未来如何克服这些错误?

【问题讨论】:

  • 这不是重复的,因为它不是关于 No 'Access-Control-Allow-Origin' 标头,而是关于不包含特别请求的密钥的响应标头。

标签: javascript ibm-watson tone-analyzer


【解决方案1】:

这是一个经典的 CORS 限制。 Postman 的工作原理不是浏览器,而是带有 REST 客户端的应用程序。

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 2016-04-24
    • 2019-02-21
    • 2017-12-20
    • 2017-01-30
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多