Reactjs Can';t使用React.js fetch方法连接到API

Reactjs Can';t使用React.js fetch方法连接到API,reactjs,api,fetch,Reactjs,Api,Fetch,我正在尝试使用fetch()通过react.js连接到缓冲区的API(),但收到400个错误响应 这是在我的本地主机上运行的,但是可以从Internet访问该站点 这是我的密码: const queryString = require('query-string'); const parsed = queryString.parse(window.location.search); const buffer_data = { client_id:

我正在尝试使用fetch()通过react.js连接到缓冲区的API(),但收到400个错误响应

这是在我的本地主机上运行的,但是可以从Internet访问该站点

这是我的密码:

const queryString = require('query-string');
        const parsed = queryString.parse(window.location.search);

const buffer_data = {
                client_id: BUFFER_CLIENT_ID,
                client_secret: BUFFER_CLIENT_SECRET,
                redirect_uri: BUFFER_CALLBACK_URL,
                code: parsed.code,
                grant_type: 'authorization_code',
};

fetch(BUFFER_ACCESS_TOKEN_URL, {
                method: 'post',
                body: JSON.stringify(buffer_data),
              }).then( data => {
                console.log('data response ' + data);
                return data.json();
            }).then( response => {
                console.log(response);
});
以下是回应:

{“错误”:“无效的请求”,“错误描述”:“无效的授权类型” 参数或缺少参数“}

控制台会打印以下内容:

未能加载:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源因此,不允许使用源“” 通道响应的HTTP状态代码为400。如果一个不透明的响应 根据您的需要,将请求的模式设置为“无cors”以获取 已禁用CORS的资源

我尝试过很多事情,比如不序列化数据,尝试发送许多不同的标题,使用CORS chrome插件,等等

在react中编写此代码之前,我已经使用PHP成功连接,但要做到这一点,我必须在服务器上添加SSL证书

我也开放使用任何图书馆,但还没有找到一个做这项工作。或者任何其他抓取方法,比如axios


非常感谢

我不知道您正在使用哪个浏览器,但您可能需要添加

用于您的chrome浏览器(如果您正在使用chrome)。这是在chrome中使用localhost时出现的一些问题

另外,我强烈建议使用axios获取API,它附带了一些简单的错误日志,可以帮助您快速解决问题


你好

只是尝试了一下,但都不起作用。400错误是您需要修复的唯一问题。你没有CORS问题。400表示错误的请求-它是服务器,指示它接收的请求的格式不是它期望的或可以处理的格式。默认情况下,服务器仅将Access Control Allow Origin标头添加到2xx成功响应,而不是4xx或5xx errors.Ok。发送的参数正是需要的,因为它在PHP中工作。我猜它们是以错误的格式发送的,但已经尝试将其作为json、stringized和var1=value&var2=value发送,但也不起作用。所以你不知道我到底做错了什么,猜猜看?你试过把
内容类型设置为
应用程序/x-www-form-urlencoded
?像这样设置
grant\u type
grant\u type=${authorization\u code}&code=$parsed.code}&client\u id=${client\u id}&client\u secret=${client\u secret}
,也不起作用。使用cors插件暂时解决了这个问题,但我仍在寻找一个永久的解决方案。我也尝试过,但没有成功。我用的是chrome。你介意和axios分享一下它的外观吗?你看过了吗?axios非常简单,您总是使用axios.get、axios.put、axios.update等调用不同的api点,并通过setState更新类状态。有很多很好的文档。