现在,我正在尝试对服务器进行访存API调用。像
const response = fetch(request, {
method: 'GET',
mode: 'cors',
headers: {
// "Content-Type": "application/json;charset=utf-8"
// "Access-Control-Allow-Origin": "*"
}
})
.then(res => res.json())
.then(data => console.log(data))
.catch(error => console.log(error));
因此网络通话通过,我得到200响应,但它给了我错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
在我的控制台上
TypeError: Failed to fetch
。
所以只是为了测试此修复程序,我试图添加ACAO标头(取消对我的标头的注释),但是发送了一个OPTIONS请求,该请求给出了405(不允许的方法)响应以及与以前完全相同的错误
如果有人可以提供帮助,我将永远爱你,谢谢。
答案 0 :(得分:0)
您的浏览器尝试对其他主机和/或端口上的某个东西进行API调用。 因此,CORS机制可确保一切正常。
您的API(服务器)必须发送响应标头“ Access-Control-Allow-Origin”以及其他一些标头。
如果您请求的不是GET或包含任何标头(大多数标头),则您的服务器必须允许通过标头“ Access-Control-Allow-Headers”进行响应来允许它们。
此外,如果您想在浏览器的JS代码中查看响应标头,则服务器必须发送“ Access-Control-Expose-Headers”。
此机制是当前所有浏览器所实施的保护。