Reactjs 在react js中调用axios get请求时获取网络错误

Reactjs 在react js中调用axios get请求时获取网络错误,reactjs,axios,Reactjs,Axios,我在Mac os中使用React.js,当我尝试调用axios.get时,我遇到网络错误。我阅读了许多其他案例,比如我的案例,他们使用react native,答案是添加设置,允许他们在mac中使用http而不是https,但该设置不能在react js中使用 如有任何建议,将不胜感激 错误:网络错误 在createError(createError.js:17) 位于XMLHttpRequest.handleError(xhr.js:87) 我的代码如下: try { const Resp

我在Mac os中使用React.js,当我尝试调用axios.get时,我遇到网络错误。我阅读了许多其他案例,比如我的案例,他们使用react native,答案是添加设置,允许他们在mac中使用http而不是https,但该设置不能在react js中使用

如有任何建议,将不胜感激

错误:网络错误 在createError(createError.js:17) 位于XMLHttpRequest.handleError(xhr.js:87)

我的代码如下:

try {
  const Response = await axios.get(http://xxxxx/WebServiceTest/service.svc?wsdl/GetItems, {

    params: {
      Number: "100",
      Id: "101",
      userName: "11",
      credential: "Test"
    }
  });
  console.log("http response = " + Response.data);
} catch (ex) {
  console.log("error.status:", ex);
}

将wait更改为promise,即使您放置wait,axios函数也将异步工作

async functionName() {
  let response = () => {
    return new Promise(function(resolve, reject) {
      fetch('http://xxxxx/WebServiceTest/service.svc?wsdl/GetItems', {
        params: {
          Number: "100",
          Id: "101",
          userName: "11",
          credential: "Test"
        }
      }).then(response => {
        resolve(response);
      });
    });
  };
  let responseData = await response();
  console.log(responseData.data);
}

您可以在reactjs中使用axios方法,在服务器端代码中使用一些命令来消除cors策略错误 我已经在我的服务器端代码(php)中使用了这些命令

header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: *');
header('Access-Control-Max-Age: 1728000');
header("Content-Length: 0");
header("Content-Type: text/plain"); 

记住:在会话开始时立即添加这些行

我在spring boot中使用@CrossOrigin注释找到了解决方案

@RestController
@CrossOrigin
@RequestMapping("/cus")
public class CusController{

    @Autowired
    CustomerService cus_service=null;

    @PostMapping("/save")
    public Customer saveCustomer(@RequestBody Customer customer)
    {

        if(customer!=null)
            return cus_service.saveCustomer(customer);
        else
            throw new DataNotFoundException("Data Not Available For Customer");

    }
}



您可以简单地在应用程序中进行以下更改

axios.create({baseURL:" "});
做成

const instance = axios.create(
{
        baseURL: "",
        withCredentials: false,
        headers: {
          'Access-Control-Allow-Origin' : '*',
          'Access-Control-Allow-Methods':'GET,PUT,POST,DELETE,PATCH,OPTIONS',   
      }
  })
在您的情况下,尝试添加上面的任何地方,您必须创建AXIOS实例。如果使用默认的AXIOS,则考虑按照上面的代码创建自定义实例。

  • 我们必须允许CORS,将访问控制置于请求头中的allow Origin:*可能不起作用。安装启用CORS请求的google扩展

  • 确保您在请求中提供的凭据有效

  • 如果您正在将请求传递到虚拟家园服务器,请确保已配置该机器。如果您使用的是vagrant tryvagrant up——provision这将使本地主机连接到宅地的db

  • 尝试更改标题的内容类型。标题:{'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8;application/json'} 这一点非常重要


  • 感谢您的回复,现在我收到错误:“未处理的拒绝(TypeError):无法读取未定义的属性'get',我搜索了,但找不到解决方案,请通知谢谢您的回答,很遗憾,我与第三方服务器的连接有问题,正在等待解决,我会尽快测试,让你知道这不是简单的获取而不是Axios吗?本质上,你似乎在说,对我来说,Axios是无用的,老实说,我不认为这是一个可信的观点。既然Axios受到普遍尊重,为什么要允许Origin两次呢?