URL未在React中获取数据

时间:2019-10-11 12:07:22

标签: javascript reactjs

我想对所需的URL发出发布请求,但是没有设置代理就给了cors error,我经历了并最终设置了代理,但仍然以本地主机作为URL。我已经在下面的proxyfile.js上附加了error和代码段。

export function PostData(userData) {
  var targetUrl = "/downloadableReport";
  return new Promise((resolve, reject) => {
    fetch(targetUrl, {
      method: "POST",
      headers: {
        "Content-Type": "application/json; charset=utf-8",
        Accept: "application/json"
      },
      body: JSON.stringify({
        requestData: {
          userName: userData.userName,
          password: userData.password
        }
      })
    }).then(response => response.json());
  });
}

这是setupProxy.js代码:

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
  app.use(
    proxy("/downloadableReport", {
      target: "http://192.168.1.220:28080/xms/abc",
      changeOrigin: true
    })
  );
};

这是错误:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果CORS是问题,并且您使用express作为后端服务器, 然后

var allowCrossDomain = function (req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,PATCH,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, Role');
  // intercept OPTIONS method
  if ('OPTIONS' == req.method) {
    res.sendStatus(200);
  } else {
    next();
  }
};

然后添加

app.use(allowCrossDomain);

放弃代理。对我来说,您的问题看起来像是将数据发布到React App本身。如果您确实在同一项目中同时拥有API和React,我建议您将它们拆分。

如果确实没有在一起,请使用协议和域将targetUrl更新为正确的URL。像var targetURl = 'http://localhost:3000/downloadableReport

更新:我已阅读您对Sudhir的评论回复。将目标网址编辑为API var targetUrl = "http://192.168.1.220:28080/xmsreport/report/downloadableReport"的完整路径,并将我上面提供的CORS代码添加到192.168.1.220:28080的API上