为了账号安全,请及时绑定邮箱和手机立即绑定

React + Express CORS错误400错误的请求

React + Express CORS错误400错误的请求

侃侃无极 2021-05-04 21:25:13
我正在尝试从React应用程序向Express后端发出异步请求。但是我得到了通常的“ CORS问题:错误的请求”:我知道Express的CORS插件,因此我已经cors从Node Plugin Manager安装并应用于我的后端,index.js例如:...import express from 'express';import cors from 'cors';...const app = express();...const whitelist = [  'http://localhost:3000']const corsOptions = {  origin: function (origin, callback) {    if (whitelist.indexOf(origin) !== -1) {      callback(null, true)    } else {      callback(new Error('Not allowed by CORS'))    }  }}app.use(cors(corsOptions));...app.listen(4000, () => console.log('server running on port 4000);因此,我尝试使用Fecth API从后端服务器检索数据:class Component extends React.Component {  render() {    const { componentId } = this.props.match.params;    (async () => {      const query = `        query {          getComponent(id: "${componentId}") {            type          }        }      `;      const options = {        method: 'POST',        body: JSON.stringify(query)      };      const component = await fetch('http://localhost:4000/graphql', options);      console.log(component);    })();    return (      <h1>Hola</h1>    );  }}export default Component;我也尝试过设置headers: { 'Content-Type': 'application/json },mode: cors并设置crossOrigin为true。每次使用任何配置时,我都会收到相同的错误。任何意见表示赞赏。
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

在开发环境中,您可以在package.json文件中添加代理:“ proxy”:“ http:// localhost:4000 ”


您的package.json应该如下所示:


"scripts": {

"start": "react-scripts start",

"build": "react-scripts build",

"test": "react-scripts test",

"eject": "react-scripts eject"

 },

  "proxy": "http://localhost:4000",

  "eslintConfig": {

    "extends": "react-app"

  },

如前所述,当您使用localhost域时,Chrome不允许发出请求。使用代理,不是图像,css,js等的所有内容都将考虑使用代理。因此,当您发出请求时,只需使用fetch('/ graphql')即可,而无需使用domain。


https://facebook.github.io/create-react-app/docs/proxying-api-requests-in-development


查看完整回答
反对 回复 2021-05-13
  • 1 回答
  • 0 关注
  • 296 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信