IBM Watson Conversation API:“预检响应中 Access-Control-Allow-Headers 不允许请求 header 字段授权”
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 库,获取工作区列表的一切都运行良好,如下所示:
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 库。相同的代码不起作用。首先我得到的错误是:
Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.
然后阅读有关此类问题的数十个线程,它就变成了黑魔法。为 Access-Control-Allow-Methods、Access-Control-Allow-Headers 等添加 headers。到目前为止没有任何效果。最终问题变成了:
Request header field access-control-allow-headers is not allowed by Access-Control-Allow-Headers in preflight response.
有人可以指点我一个示例或有效的代码吗?
==============
更新...
谢谢@sideshowbarker 和@FakeRainBrigand。我想服务器端对于浏览器客户端应用程序来说是必须的。
浏览器拒绝发送您的请求,因为您发送请求的服务器没有启用 CORS,至少 headers.
不修改目标服务器的唯一解决方案是编写自己的服务器来代表客户端发出请求。
删除设置 Access-Control-Allow-Headers
请求的任何 client-side 代码 header。
header 是 header CORS-enabled 服务器发送的响应。你不从客户端设置它。
根据问题中引用的错误消息,听起来服务器可能已经正确配置为发送正确的 Access-Control-*
header。 (否则你会得到一个错误,说响应中没有 Access-Control-Allow-Origin
。)
此时从问题中的信息中可以识别的唯一错误就是请求的问题,包括 Access-Control-Allow-Headers
请求 header 不应该存在。
我创建了一个连接到 Watson REST API 的 React-Native 应用程序。使用作为 ReactNative 一部分的 fetch 库,获取工作区列表的一切都运行良好,如下所示:
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 库。相同的代码不起作用。首先我得到的错误是:
Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.
然后阅读有关此类问题的数十个线程,它就变成了黑魔法。为 Access-Control-Allow-Methods、Access-Control-Allow-Headers 等添加 headers。到目前为止没有任何效果。最终问题变成了:
Request header field access-control-allow-headers is not allowed by Access-Control-Allow-Headers in preflight response.
有人可以指点我一个示例或有效的代码吗?
==============
更新...
谢谢@sideshowbarker 和@FakeRainBrigand。我想服务器端对于浏览器客户端应用程序来说是必须的。
浏览器拒绝发送您的请求,因为您发送请求的服务器没有启用 CORS,至少 headers.
不修改目标服务器的唯一解决方案是编写自己的服务器来代表客户端发出请求。
删除设置 Access-Control-Allow-Headers
请求的任何 client-side 代码 header。
header 是 header CORS-enabled 服务器发送的响应。你不从客户端设置它。
根据问题中引用的错误消息,听起来服务器可能已经正确配置为发送正确的 Access-Control-*
header。 (否则你会得到一个错误,说响应中没有 Access-Control-Allow-Origin
。)
此时从问题中的信息中可以识别的唯一错误就是请求的问题,包括 Access-Control-Allow-Headers
请求 header 不应该存在。