CORS随机阻止请求

时间:2020-08-25 12:42:28

标签: .htaccess http request axios cors

我目前正在使用api rest,我通过URI传递控制器参数,版本和操作。但是,当我使用超过19个字符的URI执行请求时,会出现此CORS错误:

CORS策略已阻止从来源“ http:// localhost:3000”访问“ http:// my-api-host / toll / vehicle / v1 / list”上的XMLHttpRequest:对预检请求的响应没有t通过访问控制检查:它没有HTTP正常状态。

在身份验证中,即使具有超过19个字符的URI,该请求也可以使用。但是,任何其他具有不同URI且长度超过19个字符的请求都会出现此错误。我使用我的应用程序的API,请求正常运行。

我在Reactjs中使用axios。该api已经配置为接受我正在使用的内容类型(应用程序/ json),并且还已经接受来自不同来源的请求。

我的请求代码:

request(uri, params = {}){
        return new Promise((resolve, reject) => {
            axios
                .post('http://my-api-host' + uri, JSON.stringify(params), {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                })
                .then(response => {
                    if (response.data.success) {
                        resolve(response.data);
                    } else {
                        reject(response.data);
                    }
                });
        });
    };

奇怪的是,如果我在API中打印一些数据,则请求返回200,并且我捕获了所打印的数据。在执行此操作之后,它可以处理之前给出此错误的所有请求,然后在api中再次打印一些数据,然后再次运行。是不是很奇怪?

1 个答案:

答案 0 :(得分:-1)

已解决!

问题是我的API接受了请求,但未正确处理OPTIONS请求,并且未使用代码200进行响应。

解决方案:

除了接受代码200响应之外,我还对REQUEST_METHOD为OPTIONS时进行了比较。