我创建了一个连接到watson rest apis的反应本机应用程序。使用属于反应术的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) => { ... }
我现在正在做反应(而不是反应性)和Whatwg-fetch库。相同的代码不起作用。首先,我有一个错误:
请求标题字段授权不允许访问前响应中的访问控制范围。
然后阅读有关此类问题的数十个线程,它才变成了黑魔法。添加访问控制的标头,访问控制者 - 供应头等。到目前为止,什么都没有。最终问题变成了:
请求标头访问访问权限控制者 - 访问权限允许头部在飞行前响应中不允许使用。
有人可以将我指向有效的示例或代码吗?
==============
更新...
谢谢@sideshowbarker和@fakerainbrigand。我猜那服务器端是浏览器客户端应用的必要条件。
浏览器拒绝发送您的请求,因为您要发送请求的服务器未启用CORS,至少没有这些标题。
唯一不修改您要定位的服务器的解决方案是编写自己代表客户端请求的服务器。
删除任何客户端代码正在设置Access-Control-Allow-Headers
请求标头。
标题是响应标题启用CORS的服务器发送。您不会从客户端设置它。
基于问题中引用的错误消息,听起来像服务器可能已经正确配置为发送正确的Access-Control-*
标头。(否则,您会遇到一个错误,说响应中没有Access-Control-Allow-Origin
。)
此时,问题中唯一可以从问题中识别的错误只是请求的问题,包括不应该存在的Access-Control-Allow-Headers
请求标头。