【发布时间】:2019-06-11 20:58:24
【问题描述】:
注意:我已经找到了解决方案。我只是发布问题和解决方案,以防其他人遇到类似问题
长话短说:
当我有一个 REACT 客户端应用程序向我在通过 NetBeans 运行的 Payara 服务器上运行的 Java Web 服务器进行 HTTP 发布时,我在浏览器的开发人员工具窗口上收到此 CORS 错误消息:
SEC7120:[CORS] 原点“http://localhost:3000”未找到 Access-Control-Allow-Origin 响应中的“http://localhost:3000” 跨域资源的标头位于 'http://localhost:8080/DatabaseWebService/databaseConnectorMethod'。
有关 CORS 的更多信息,请参阅此网站https://enable-cors.org/
长篇大论:
我有一个在 http://localhost:3000 上运行的 REACT 项目,向我在本地 Payara 服务器版本 4.1.1 上运行的 Java Web 服务 (DatabaseWebService) 发送 HTTP 帖子。 REACT 应用请求的 Web 服务 URL 是“http://localhost:8080/DatabaseWebService/databaseConnectorMethod”
每次我运行 REACT 代码时,都会收到上面列出的 CORS 错误。
这是我发出 http post 请求的 REACT 代码:
const postData = new URLSearchParams();
postData.append('var1', 'somedata1');
postData.append('var2', 'somedata2');
let axiosConfig = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
axios.post('http://localhost:8080/DatabaseWebService/databaseConnectorMethod', postData, axiosConfig)
.then((res) => {
console.log("AXIOS POST RESPONSE RECEIVED: ", res);
})
.catch((err) => {
console.log("AXIOS POST ERROR: ", err);
})
这是我的 servlet 代码:
public class DatabaseConnectorServlet extends HttpServlet {
@Override
final protected void doPost(final HttpServletRequest request, final HttpServletResponse response)
throws ServletException, IOException {
try {
System.out.println("DatabaseConnectorServlet Received a HTTP POST");
String var1= request.getParameter("var1");
String var2= request.getParameter("var2");
System.out.println(var1 + var2);
response.getWriter().print("I GOT YOUR MESSAGE");
} catch (Exception ex) {
response.getWriter().print(ex);
}
}
我在上面的 Java 代码中设置了断点并看到它被命中,我看到它执行了所有命令,包括 response.getWriter().print 没有问题。但是,当我查看浏览器开发人员工具控制台窗口时,我确实看到了 CORS 异常。
【问题讨论】:
标签: java reactjs web-services cors