Tengo un servidor local con una IP estática 192.168.1.3:8080 geoservidor alojado usando appach tomcat, quiero enviar datos gps desde mi teléfono a Geoserver, que también tiene una IP estática "192.168.1.233:8080", la aplicación de Android side es una vista web simple, uso la función loadURL para cargar html y java script que usan 'POST' para enviar datos al servidor.
La página web y el código Js funcionan perfectamente (sin error de sintaxis ni tiro... etc.)
String JSCODE = "<!DOCTYPE html><html> <head> TEST <script>"+JSCODE_nonhtml+ "</script> </head> </html>"; WebView _wbv = (WebView)findViewById(R.id.mywebview); _wbv.getSettings().setJavaScriptEnabled(true); _wbv.getSettings().setAllowUniversalAccessFromFileURLs(true); _wbv.getSettings().setAllowFileAccessFromFileURLs(true); _wbv.getSettings().setGeolocationEnabled(true); _wbv.loadDataWithBaseURL("", JSCODE, "text/html", "utf-8", null);Cuando ejecuto la aplicación me sale este error:
I/chromium: [INFO:CONSOLE(0)] "Access to XMLHttpRequest at 'http://192.168.1.3:8080/geoserver/wfs' from origin 'null' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.", source: about:blank (0)Sé que hay un problema de CORS, entonces, ¿cómo puedo solucionarlo tanto en Android como en el servidor de PC? gracias de antemano.
EDITAR I Agregué el siguiente comando a
C:\Archivos de programa\Apache Software Foundation\Tomcat 9.0\conf\web.xml
de la configuración del servidor tomcat
<filter> <filter-name>httpHeaderSecurity</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <async-supported>true</async-supported> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <url-pattern>/*</url-pattern> <init-param> <param-name>cors.allowed.origins</param-name> <param-value>*</param-value> </init-param> </filter>