AxiosError {message: 'Network Error', name: 'AxiosError', code: 'ERR_NETWORK', config: {…}, request: XMLHttpRequest, …}

回答 2 浏览 6481 2022-11-19

我正在做一个项目,它的前端是react,后端是spring,但我似乎无法用axios来连接这两者。

请记住,后台是正常工作的(也是我不太擅长react)。

这是我在控制台得到的错误信息。

  1. AxiosError {message: 'Network Error', name: 'AxiosError', code: 'ERR_NETWORK', config: {…}, request: XMLHttpRequest, …}

    1. code: "ERR_NETWORK"

    2. config: {transitional: {…}, transformRequest: Array(1), transformResponse: Array(1), timeout: 0, adapter: ƒ, …}

    3. message: "Network Error"

    4. name: "AxiosError"

    5. request: XMLHttpRequest {data: undefined, onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, …}

    6. response: XMLHttpRequest {data: undefined, onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, …}

    7. [[Prototype]]: Error

这是我的api.js:

import axios from 'axios';

const api = axios.create({
  baseURL: "https://localhost:8080"
});

export default api;

这是我的App.js:

import './App.css';
import axios from "axios";
import {useEffect, useState} from 'react'
import api from './api.js';

function App() {
  const songs = async () => {
    try{
      const response = await api.get("/songs");
    }
    catch(err) {
      console.error(err);
    }
  };
  return (
     <div className="all-page">
             <main className="central-div">
                <h2>Taylor's Songs</h2>
                <button type="submit" className="quote-bttn" onClick={songs}>
                    FIND ME A QUOTE
                </button>
                <button type="submit" className="recommend-bttn">
                    GET ME A RECOMMENDATION
                </button>
             </main>
        </div>
  );
 
}

export default App;

每当我试图点击"quote-bttn"按钮时,问题就来了。

如果有人知道如何解决这个问题,我将非常感激!

(另外,如果有什么我遗漏的,这是完整的代码。https://github.com/vitoriaacarvalho/my-taylor-swift-api/commit/0276222d35aa9a3fda8033f594d9727feded854b")

vitoriac 提问于2022-11-19
听起来像是Cors的错误。Konrad 2022-11-19
2 个回答
#1楼 已采纳
得票数 1

你似乎使用的是https请求,而不是http。你的基本URL翻译成你的服务器是在你的本地机器上。本地服务器可以使用http和https访问,但如果你确定你已经将SSL证书配置为访问https请求,那么试着检查你的CORS policy/restrictions的限制。理想的情况是选择CORS:"Allow",但你也可以配置它,使请求只接受来自指定的客户端口。

Srikanth L 提问于2022-11-19
Srikanth L 修改于2022-11-19
这对我帮助很大!谢谢你!对于将来有同样问题的人来说,我使用的代码是这样的:公共类WebMvcConfig实现WebMvcConfigurer{ Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("") .allowedOrigins("") .allowedHeaders("*") .allowCredentials(false) .maxAge(86400); }}vitoriac 2022-11-21
#2楼
得票数 -1

如果你在本地进行尝试,cors并不重要。你需要确保你在后端指向正确的端点网址。

例如,如果你的端点网址在后台是http://localhost:5000/api,而在前台是指向http://localhost:5000/api2,这种错误的拼写会引起axios的'Networ Error'。

Moisés Santana V 提问于2022-12-30
在本地环境中,Cors确实很重要,因为主机的端口在cors的同源策略中很重要(w3.org/Security/wiki/Same_Origin_Policy)。Ar7hurz1nh0 2022-12-30
虽然你可以在不使用Cors配置的情况下测试你的连接,这就是为什么我说在本地无所谓的原因。Moisés Santana V 2023-01-01
你也可以从postman那里用本地的方式POST东西,而不使用cors,它也可以工作,所以请删除"我的答案没有用"。Moisés Santana V 2023-01-01
不,你不能在没有cors的情况下测试本地或任何其他环境,首先要禁用它。另外,cors功能在Postman、Insomnia、HTTPie或curl等客户端中不起作用,只是因为它是BROWSERS在与不同的域名合作时使用的一种保护措施(你可以看到发送的头信息,但在我提到的客户端上几乎没有用)。我不会删除"我的答案没有用"的标签,因为我上面说的问题&39;的答案与cors不相关,这是一个op使用https而不设置ssl的问题。Ar7hurz1nh0 2023-01-02