Ir al contenido principal

[GWT] XMLHttpRequest cannot load. Origin is not allowed by Access-Control-Allow-Origin

I am developing an app front end  with GWT and this connect to other app that publish AppEngine Endpoints services. 
(Estoy desarrollando una aplicación  front end con GWT que se conecta a otra app que publica servicios rest en AppEngine usando Google Cloud EndPoints).

But, I is generating some problems (is not allowed by Access-Control-Allow-Origin.): 
(Pero, esto  me esta generando  algunos problemas).

The app GWT  call endpoint using  RequestBuilder. and the Endpoint app is other app with other domain. and both was deployed in https://appengine.google.com
(La app GWT llama a los servicios rest' endpoints' usando RequestBuilder. y la app endpoint es otra app con otro dominio. Ambas fueron deployadas en https://appengine.google.com).

Domains of the Apps:
-xappgwtx.appspot.com (GWT).
-xappendpointsx.appspot.com (Google Cloud Endpoints).

GWT Code:

public String getDevice(String id) {
String url = URL_SERVICE_BASE + "deviceendpoint/v1/device/get/" + id;
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
logger.info("::::::::::::sendRequest:::::::");
try {
builder.sendRequest(null, new RequestCallback() {
public void onResponseReceived(Request request, Response response) {
logger.info("response=" + response.getText() + " request:" + request);
resp = response.getText();
if (response.getStatusCode() == 200) {
System.out.println("response=" + response.getText());
logger.info("response=" + response.getText());
}
}

public void onError(Request request, Throwable exception) {
logger.info("onError response=" + exception.getMessage());
resp = exception.getMessage();
exception.printStackTrace();
}
});
} catch (RequestException e) {
logger.info("exception=" + e.getMessage());
e.printStackTrace();

}
return resp;
}

Chrome Console:

After much research in lists, stackoverflow and other forum, solve the problem
(Luego  de mucha investigación en listas y stackoverflow llegue a solucionar el  problema)

Solution: to solve this issue simply assign a variable to your json string into the eval

* Before:

  public static native JavaScriptObject fromJson(String json) /*-{

    return eval("(" + json + ")");

  }-*/;
  
  public final String toJson() {
    return new JSONObject(this).toString();
  }
  
  protected BaseJso() {
  }

* After: 

public class BaseJso extends JavaScriptObject {



public static native JavaScriptObject fromJson(String json) /*-{
eval('var res = ' + json);
return res;
}-*/;

public final String toJson() {
return new JSONObject(this).toString();
}

protected BaseJso() {
}

}

References:


Comentarios

Entradas populares de este blog

JPL - Conectar Java con Prolog

Se presentara una manera sencilla de conectar una aplicacion Java a Prolog, el cual ejectara un  proceso inteligente. Para ello se usara el IDE Eclipse y SWI Prolog y la conexion se realizara a travez de la interface JPL( Java Prolog Library ). Seguir los siguientes pasos: Instalar  SWI Prolog ,  Eclipse  , JDK 1.6 Añadir como variable de sistema en el Path :  C:\Archivos de programa\Java\jdk1.6.0_10\bin; C:\Archivos de programa\Java\jdk1.6.0_10\lib\tools.jar; C:\Archivos de programa\Java\jdk1.6.0_10\jre\lib\rt.jar; C:\Archivos de programa\pl\bin; C:\Archivos de programa\pl\lib\jpl.jar; Crear padre.pl en  SWI Prolog Crear TestJavaProlog en  Eclipse, antes debes haber creado un projecto java y añadir jpl.jar(se encuentra en el  directorio donde se instalo  SWI Prolog ) como libreria. Escribir el codigo Java que invocara a Padre.pl package dmotta.blogspot.com.javaprolog; import java.util.Hashtable; import jpl.Query; public class TestJavaProlog { /** * @Autor David

Debugging Remoto con Eclipse + WebSphere 7 + Maven

Tienes proyectos java en Maven y no puedes ubicar bugs fácilmente a falta de junit. Sin embargo, existe la alternativa de debugear la aplicación web a través de Java Debugger (jdb). Aquí les muestro una guía de como hacer un debug remoto de la aplicación web en Eclipse y WebSphere 7 a través de Java Debugger (JDB). Eclipse <----> Java Debugger (jdb) <----> WebSphere 7 1. Habilitar el WebSphere en modo Debug. Para esto seguir los siguientes pasos:  1. Servers –> Server Types –> WebSphere application servers 2. Under Server Infrastructure section –> expandir Java and Process Management –> Process definition 3. dentro de la seccion Additional Properties –> click Java Virtual Machine 4. clic en el check “Debug Mode” 5. En texbox Debug arguments, poner este valor:  -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 6. Reiniciar el servidor WebSphere. Ahora, WebSphere se inicia en modo debug, y escuchando en el pu

Java POI HSSFCell : añadir comentario en una celda

POI HSSFComment: Una manera simple de añadir un comentario en una celda de excel usando el metodo cell.setCellComment(). public class ExcelTools { public static void main(String[] args){ //escribirExcel(); //leerExcel(); validarValoresDuplicadosLista(); System.out.println("Ejemplo Finalizado."); } public static void escribirExcel(){ try{ //Se crea el libro Excel HSSFWorkbook wb = new HSSFWorkbook(); //Se crea una nueva hoja dentro del libro HSSFSheet sheet = wb.createSheet("HojaEjemplo"); //Se crea una fila dentro de la hoja HSSFRow row = sheet.createRow((short)0); HSSFPatriarch patr = sheet.createDrawingPatriarch(); //Creamos celdas de varios tipos row.createCell((short)0).setCellValue(1); row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue("ejemplo&