react:Axios 网络错误

IT技术 javascript reactjs axios
2021-04-02 19:10:05

这是我第一次使用axios,遇到了一个错误。

  axios.get(
    `http://someurl.com/page1?param1=1&param2=${param2_id}`
  )
  .then(function(response) {
    alert();
  })
  .catch(function(error) {
    console.log(error);
  });

使用正确的 url 和参数,当我检查网络请求时,我确实从我的服务器得到了正确的答案,但是当我打开控制台时,我看到它没有调用回调,而是捕获了一个错误。

错误:网络错误堆栈跟踪:createError@ http://localhost:3000/static/js/bundle.js:2188:15 handleError@ http://localhost:3000/static/js/bundle.js:1717:14

6个回答

如果使用 NodeJS 创建 API


您的 Express 应用程序需要使用 CORS(跨域资源共享)。将以下内容添加到您的服务器文件中:

// This should already be declared in your API file
var app = express();

// ADD THIS
var cors = require('cors');
app.use(cors());

为了更全面地了解 CORS,请阅读关于 CORSMozilla 文档

这个答案也适用于 NestJS,我在客户端遇到了同样的错误,不得不添加{ cors: true }NestFactory.create. - ,,,,,,app = await NestFactory.create(AppModule, { cors: true });
2021-05-27 19:10:05
谢谢!,救命。我试图运行一个 angular 应用程序,它通过我的手机与 node 通信,但它没有工作。即使它在我的电脑上工作。如果节点找不到 CORS“未找到module”,只需运行 npm install cors。
2021-05-29 19:10:05
我没有使用 Express。我在 ReactJS 应用程序中使用 Axios。如何在 axios 中使用 CORS?
2021-06-02 19:10:05
我正在使用 Django。我该如何解决这个问题?
2021-06-03 19:10:05
重要的一点是在处理请求的代码之前添加 cors 中间件
2021-06-08 19:10:05

我的问题是关于我请求的网址。我没有http://在 url 的开头插入我的意思是我请求的是一个像92.920.920.920/api/Token而不是http://92.920.920.920/api/Token. 添加http://解决了我的问题。

我正在使用它,我什至将我的 nodejs 应用程序上传到 heroku
2021-06-02 19:10:05

除了@jacobhobson 的回答之外,我还使用了一些参数来使其工作。

app.use(cors({origin: true, credentials: true}));

当您在本地主机上工作而忘记添加http://时会发生这种情况

错误使用

  const headers = {
    "Content-Type": "application/json",
    Authorization: apiKey,
  };
  const url = "localhost:5000/api/expenses/get-expenses";

  axios.get(url, { headers });

  // NETWORK ERROR

正确的是

  const headers = {
    "Content-Type": "application/json",
    Authorization: apiKey,
  };
  const url = "http://localhost:5000/api/expenses/get-expenses";

  axios.get(url, { headers });

  // WORKS FINE IF YOU HANDLED CORS CORRECTLY IN THE SERVER SIDE

忘记端口让它对我不起作用,这有助于触发这个想法,谢谢!
2021-05-22 19:10:05
感谢您帮助我 +1
2021-06-02 19:10:05

我在制作数字海洋液滴时遇到了同样的问题。我用的是爱可信ReactJS调用Node.js的API。

虽然我包括了 cors

const cors = require('cors');
app.use(cors());

但我还是要补充

res.header( "Access-Control-Allow-Origin" );

在调用我的控制器之前。它对我有用。在那里我意识到 cors 无法正常工作。所以我卸载并再次安装它们,它有效!

完整代码在这里。

所以无论你使用

 app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  res.header("Access-Control-Allow-Headers", "x-access-token, Origin, X-Requested-With, Content-Type, Accept");
  next();
});

或使用

app.use(cors());

一样的。

app.use(cors());虽然它显示网络错误,但我已经使用了但并非每次我都收到此错误。我正在调用用于视频上传的 API。多次调用后,它向我抛出网络错误。
2021-05-22 19:10:05
是的。已经安装了。
2021-05-24 19:10:05
@JaynaTanawala 你安装 cors 了吗?尝试运行“npm install cors --save”
2021-05-26 19:10:05
您可以在 server.js 中调用路由之前使用它,或者如果您正在使用一些中间件,那么您可以将这些行放在那里。PS我也更新了我的答案。
2021-05-31 19:10:05
以及我应该在哪里包含 cors ``` const cors = require('cors'); app.use(cors()); ```?
2021-06-17 19:10:05