#1 2016-01-25 21:49:15

PoKeRGT
Member
Registered: 2016-01-25
Posts: 3

HttpClient OPTIONS en vez de GET

Hola,

He empezado a "cacharrear" con la aplicación (versión 2016.61 25/01/2016 sin registrar) que me parece muy sencilla e interesante para hacer RAD/prototipos pero me he atascado con lo primero que he intentado y no entiendo el porqué:

Objetivo

Descargar una imagen de un servidor local y mostrarla en un control Image

Problema

En la petición al servidor, aunque se le especifica que sea un GET, manda un OPTIONS

Escenario

En la vista que se crea automáticamente en una nueva aplicación (NuevaVista1) he puesto:
- Un control HttpClient (HttpClient1)
- Un control Image (Image1)

En el evento Show de Nuevavista1 el siguiente código:

HttpSetUrl "HttpClient1" "http://127.0.0.1:8080/chat3.png"
HttpSetMethod "HttpClient1" "GET"
HttpExecute "HttpClient1"

En el evento Success de HttpClient1:

HttpResponse "HttpClient1" "[Image1.Image]"

Error

OPTIONS ERROR

Estas son las trazas en Chrome:

Comienzo del evento Show de NuevaVista1
app.js:130 HttpSetUrl "HttpClient1" "[url]http://127.0.0.1:8080/chat3.png[/url]"
app.js:130 HttpSetMethod "HttpClient1" "GET"
app.js:130 HttpExecute "HttpClient1"
app.js:130 Final del evento Show de NuevaVista1
builder.js:93 OPTIONS [url]http://127.0.0.1:8080/chat3.png[/url] (anonymous function) @ builder.js:93r @ builder.js:89g @ builder.js:86(anonymous function) @ builder.js:119r.$eval @ builder.js:133r.$digest @ builder.js:131r.$apply @ builder.js:134(anonymous function) @ app.js:1159b @ builder.js:176
(index):1 XMLHttpRequest cannot load [url]http://127.0.0.1:8080/chat3.png[/url]. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '[url]http://127.0.0.1:9999[/url]' is therefore not allowed access. The response had HTTP status code 405.

Gracias.

Last edited by PoKeRGT (2016-01-25 21:49:52)

Offline

#2 2016-01-25 21:54:54

David
Admin
From: Alcobendas, Madrid, Spain
Registered: 2015-04-21
Posts: 1,660
Website

Re: HttpClient OPTIONS en vez de GET

Hola PoKeRGT,

Gracias por su interés. De veras que intento por todos mis medios que App Builder vaya más allá de crear prototipos. De hecho ya hay algunas aplicaciones bastante interesantes circulando por ahí. Respecto de su pregunta, me temo que su problema no es específico de App Builder, sino de cualquier aplicación Web.

El problema que está encontrando tiene que ver con los permisos CORS que el servidor de la aplicación ha de habilitar, precisamente, respondiendo a la petición "OPTIONS" correctamente. Podrá ver ejemplos de cómo habilitar CORS en PHP en varios de los ejemplos incluidos en App Builder. También podrá buscar más ejemplos por internet.

En todo caso, para mostrar una imagen en su aplicación no necesita descargarla, o, por mejor decir, bastará conque indique la URL de dicha imagen en la propiedad "Image" del control "Image". Dicha URL podrá enlazar a un archivo de imagen incluido en la aplicación o bien a una imagen de su servidor. En este caso el CORS no será problema.

Espero que esta información le resulte de ayuda.

Si tiene cualquier otra duda no deje de indicarlo.

Gracias de nuevo por su interés en mi trabajo PoKeRGT.

Online

#3 2016-01-26 02:38:27

PoKeRGT
Member
Registered: 2016-01-25
Posts: 3

Re: HttpClient OPTIONS en vez de GET

Hola David,

Primero, darte las gracias por tu pronta respuesta.

Segundo confirmarte que, efectivamente, se trataba de un problema con los permisos CORS. He habilitado CORS y configurado las cabeceras y ya funciona correctamente.

En mi caso estaba usando http-server sobre npm y he tenido que usar el parámetro:

--cors[=headers]   Enable CORS via the "Access-Control-Allow-Origin" header',
    '                     Optionally provide CORS headers list separated by commas',

Una vez más, gracias.

Last edited by PoKeRGT (2016-01-26 02:42:08)

Offline

#4 2016-01-26 02:41:55

David
Admin
From: Alcobendas, Madrid, Spain
Registered: 2015-04-21
Posts: 1,660
Website

Re: HttpClient OPTIONS en vez de GET

Hola PoKeRGT,

Es raro que no pueda configurar los permisos CORS de alguna forma: al fin y al cabo se trata de un estándar que debería estar soportado por todos los servidores, so pena de dejar de dar servicio cuando se requiera. En los ejemplos de App Builder se habilita CORS usando PHP, pero, me consta que podría hacerse usando archivos ".htaccess" de Apache, por ejemplo.

En todo caso, le recuerdo que, para mostrar imágenes, no necesita usar un control "HttpClient", sino que basta con usar el control "Image", por ejemplo. De nuevo le remito a los ejemplos del programa, puesto que en muchos de ellos se hace uso del control "Image". En todo caso gracias por su interés en App Builder.

Online

#5 2016-01-26 02:43:01

PoKeRGT
Member
Registered: 2016-01-25
Posts: 3

Re: HttpClient OPTIONS en vez de GET

Perdona, pero con la velocidad que me has respondido no me ha dado tiempo a modificar mi respuesta.

Ya funciona tal y como he cambiado en el post anterior.

Gracias.

Offline

#6 2016-01-26 03:09:34

David
Admin
From: Alcobendas, Madrid, Spain
Registered: 2015-04-21
Posts: 1,660
Website

Re: HttpClient OPTIONS en vez de GET

Hola,

Me alegro de que al final diese con ello. Gracias por indicar la solución para su servidor.

Online

Board footer

Powered by FluxBB


Copyright ©2018 DecSoft. All rights reserved.