Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2023
alejozd alejozd is offline
Miembro
 
Registrado: jul 2010
Posts: 16
Poder: 0
alejozd Va por buen camino
DataSnap Rest - React

Hola a todos, estoy creando un proyecto Servidor DataSnap Rest en Delphi 10.2, he realizado el ejemplo de este servidor conectando a una base de datos Firebird 3.0
Este proyecto me crea un .exe , desde esta aplicación hay un botón para iniciar el servidor en el puerto 8080.
En este servidor DataSnap Rest expuse un método que se llama ListaProductos, al hacer la prueba funciona bien y responde en http://LocalHost:8080/datasnap/rest/...istaProductos/

Luego hice una aplicación React donde hago el consumo de ListaProductos, al correr la aplicación React, abre en chrome LocalHost:3000 y se ve la pagina html ; dentro de la pagina esta el botón "Lista de Productos", al hacer clic en este botón consume el método ListaProductos del DataSnap Rest http://LocalHost:8080/datasnap/rest/...istaProductos/

Despues compile la aplicación React para montarlo en el IIS de mi equipo. hice la prueba y la pagina web se ve en el navegador.
El problema surge ya que al hacer clic en el botón ListaProductos no trae el listado y veo en la consola que no puede acceder al método en al dirección http://LocalHost:8080/datasnap/rest/...istaProductos/
El error que se ve en la consola de google chrome es el siguiente:
Access to fetch at http://LocalHost:8080/Datasnap/rest/...ListaProductos from origin http://MyPCServer has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space private.

En el servidor DataSnap Rest tengo habilitado en el WebModuleBeforeDispatch de la siguiente manera:
Código:
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.SetCustomHeader('Access-Control-Allow-Origin','*');  
 
  if Trim(Request.GetFieldByName('Access-Control-Request-Headers')) <> '' then begin 
    Response.SetCustomHeader('Access-Control-Allow-Headers', Request.GetFieldByName('Access-Control-Request-Headers'));        
    Handled := True;
  end;
 
  if FServerFunctionInvokerAction <> nil then
    FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker;
end;
Ambas aplicaciones (Servidor y Cliente) están en el mismo servidor (MyPCServer)
Lo ideal es:
  • El servidor DataSnap Rest este a la escucha de las peticiones que haga el cliente React
  • EL cliente React funcione como una pagina en el navegador y la puedan acceder en la red local

Espero haber explicado bien el escenario, de antemano gracias por cualquier ayuda!
Responder Con Cita
  #2  
Antiguo 26-09-2023
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
DataSnap Rest - React

Prueba con esto.
Código Delphi [-]


procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
 remoteIP := Request.RemoteAddr;
 Response.SetCustomHeader('Access-Control-Allow-Origin', '*');

 if trim(Request.GetFieldByName('Access-Control-Request-Headers')) <> '' then
  begin
   Response.SetCustomHeader('Access-Control-Allow-Headers', Request.GetFieldByName('Access-Control-Request-Headers'));
   Handled := True;
  end;

 if FServerFunctionInvokerAction <> nil then
  FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker;

end;



procedure TWebModule1.DSServer1Connect(
  DSConnectEventObject: TDSConnectEventObject);
begin
  TDSSessionManager.GetThreadSession.PutData('RemoteAddr', remoteIP);
//  TDSSessionManager.GetThreadSession.GetData('RemoteAddr');
end;


Un saludo.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Datasnap Rest Server nombre lbidi Conexión con bases de datos 0 28-06-2021 16:48:36
PHP / Rest DataSnap Rockin PHP 8 14-02-2017 20:49:38
Descarga de archivo Datasnap REST andresenlared Delphi para la web 1 17-12-2016 12:04:44
DataSnap REST Error HTTP/1.1 500 blaiselaborde Varios 4 09-11-2015 15:31:03
Datasnap Rest Server dison Desarrollo en Delphi para Android 3 16-05-2014 09:48:44


La franja horaria es GMT +2. Ahora son las 00:36:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi