我想对所需的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
})
);
};
这是错误:
答案 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上