在ReactJS组件中,对重定向到另一个API的API的访存调用不会返回最终目标的响应。提取仅返回opaque
响应,且返回值为0,就好像您的呼叫失败一样。它甚至没有说它已重定向。但是在Chrome的控制台中,“网络”标签清楚地显示了重定向的呼叫已成功。
let call = fetch(encodedQueryUrl, {
method: 'GET',
cache: 'no-cache',
mode: 'no-cors',
redirect: 'follow',
credentials: 'same-origin'
}).then((response) => {
console.log("Response???", response);
return response;
});
encodingQueryURL响应标头:
Request Method: GET
Status Code: 302
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Headers: access-control-allow-origin
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin: *
content-length: 0
content-type: text/html; charset=UTF-8
和302 Response标头:
Request Method: GET
Status Code: 200
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Headers: access-control-allow-origin
access-control-allow-methods: GET, POST, GET, OPTIONS, PUT, DELETE
access-control-allow-origin: *
content-type: application/json; charset=UTF-8
答案 0 :(得分:4)
因为您使用的是“ no-cors”模式,所以得到的响应不透明。这是一种安全机制,因为您要避免CORS验证。因此,为了确保其安全性,无法从JS代码访问响应的内容,只能将其用于缓存。
您可以获取有关不透明响应here的更多信息
更新:据我所知,您可能使用了无相关信息,是因为您遇到了CORS的问题,因为您正在消耗来自另一个域的资源,而该域不同于API的域。>
要实现这一目标,您将需要: