繁体   English   中英

IBM Watson Conversation API:“在飞行前响应中,Access-Control-Allow-Headers不允许请求标头字段授权”

[英]IBM Watson Conversation API: “Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response”

我创建了一个连接到Watson REST API的React-Native应用程序。 使用作为ReactNative一部分的fetch库,一切都很好地获得了Workspaces列表,如下所示:

    const myAuth = new Buffer(USR+':'+PWD).toString('base64');
    const myInit = {
        method: 'GET',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'Origin': '',
            'Authorization': 'Basic ' + myAuth,
        }
    };

    return fetch(URL, myInit)
        .then((response) => response.json())
        .then((responseJson) => { ... }

我现在要移至React(而不是ReactNative)和whatwg-fetch库。 相同的代码不起作用。 首先,我得到以下错误:

请求标头字段在飞行前响应中,Access-Control-Allow-Headers不允许进行授权。

然后阅读有关这些类型问题的数十条线索,这简直是不可思议的事情。 为Access-Control-Allow-Methods,Access-Control-Allow-Header等添加标题。 到目前为止,什么都没有真正起作用。 最终问题变成了:

飞行前响应中的Access-Control-Allow-Headers不允许请求标头字段access-control-allow-headers。

有人可以给我指出一个可行的示例或代码吗?

==============

更新 ...

谢谢@sideshowbarker和@FakeRainBrigand。 我想服务器端对于浏览器客户端应用来说是必须的。

浏览器拒绝发送您的请求,因为您发送请求的服务器尚未启用CORS,至少没有启用这些标头。

无需修改目标服务器的唯一解决方案是编写自己的服务器来代表客户端发出请求。

删除所有设置Access-Control-Allow-Headers请求标头的客户端代码。

该标头是启用了CORS的服务器发送的响应标头。 您无需从客户端进行设置。

根据问题中引用的错误消息,听起来服务器可能已经正确配置为发送正确的Access-Control-*标头。 (否则,您将收到一条错误消息,指出响应中没有Access-Control-Allow-Origin 。)

从问题中的信息中唯一可以识别的错误就是请求的问题,其中包括不应存在的Access-Control-Allow-Headers请求标头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM