РЕШЕНИЕ В приложении веб-службы Java вам необходимо добавить несколько заголовков, чтобы разрешить CORS в объекте Response. Вот обновленный код Java, обратите внимание на дополнительную строку кода response.addHeader:
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");
response.addHeader("Access-Control-Allow-Origin", "http://localhost:3000"); //Here's the extra line needed to allow CORS to your server side code
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.addHeader("Access-Control-Allow-Origin", "http://localhost:3000");
response.getWriter().print(ex);
}
}
С этим обновленным кодом я теперь могу видеть образец текста «Я получил ваше сообщение» в окне консоли инструмента разработчика веб-браузера. где работает код React.
Это в основном позволяет http-запросу из другого домена / порта (т.е. в данном случае приложения REACT) получить доступ к данным из этого веб-сервиса Java.
Также, чтобы вы знали, есть некоторые другие дополнительные заголовки, которые вы можете включить (которые я видел по другим вопросам), которые мне не нужны в моей ситуации, но могут быть полезны в вашей. Вот дополнительные заголовки и некоторые примеры значений:
response.addHeader("Access-Control-Allow-Origin", "http://localhost:3000");
response.addHeader("Access-Control-Allow-Headers", "Origin, Content-Type, Accept, X-Auth-Token");
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Request-Headers", "Origin, X-Custom-Header, X-Requested-With, Authorization, Content-Type, Accept");
response.addHeader("Access-Control-Expose-Headers", "Content-Length, X-Kuma-Revision");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS");