通过cors但ACAO获取API响应

时间:2019-06-28 23:36:13

标签: javascript rest fetch fetch-api

现在,我正在尝试对服务器进行访存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(不允许的方法)响应以及与以前完全相同的错误

如果有人可以提供帮助,我将永远爱你,谢谢。

1 个答案:

答案 0 :(得分:0)

您的浏览器尝试对其他主机和/或端口上的某个东西进行API调用。 因此,CORS机制可确保一切正常。

您的API(服务器)必须发送响应标头“ Access-Control-Allow-Origin”以及其他一些标头。

如果您请求的不是GET或包含任何标头(大多数标头),则您的服务器必须允许通过标头“ Access-Control-Allow-Headers”进行响应来允许它们。

此外,如果您想在浏览器的JS代码中查看响应标头,则服务器必须发送“ Access-Control-Expose-Headers”。

此机制是当前所有浏览器所实施的保护。

看看https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS