Tengo la aplicación de funciones de Azure escrita en python. La aplicación funciona bien en el editor azul y en la solicitud de llamada de python también está bien. Pero cuando quiero llamarlo desde el javascript del lado del cliente (desde mi aplicación de reacción) obtengo una respuesta vacía
Lo llamo de esta manera:
fetch("https://xxxxx.azurewebsites.net/api/testtrigger?", { mode: 'no-cors', method: 'GET' }).then(response => response.text()).then((response) => { console.log(response) })El no-cors está ahí porque lo pruebo en localhost.
El código de función se ve así:
import logging import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Function called') return func.HttpResponse("Its working")Azure muestra que se está llamando a la función, pero ¿hay alguna razón por la que no me di cuenta de que esto no debería funcionar? Recibo una respuesta pero está vacía, aquí está la respuesta json:
Response {type: 'opaque', url: '', redirected: false, status: 0, ok: false, …} body: (...)bodyUsed: falseheaders: Headers[[Prototype]]: Headersappend: ƒ append()delete: ƒ delete()entries: ƒ entries()forEach: ƒ forEach()get: ƒ ()has: ƒ has()keys: ƒ keys()set: ƒ ()values: ƒ values()constructor: ƒ Headers()Symbol(Symbol.iterator): ƒ entries()Symbol(Symbol.toStringTag): "Headers"[[Prototype]]: Objectok: falseredirected: falsestatus: 0statusText: ""type: "opaque"url: ""[[Prototype]]: ResponseEste código en python funciona bien:
import requests x = requests.get('https://xxxxx.azurewebsites.net/api/testtrigger') print(x.text)no-cors es una directiva explícita para fetch para decirle que no haga nada que requiera que el servidor use CORS para otorgar permiso.
Leer el cuerpo de la respuesta requiere permiso.
Como dijo que no-cors , obtiene un cuerpo vacío en lugar de los datos con los que respondió el servidor.
Entonces, básicamente, la respuesta para esto es: no puedo llamar a las funciones de Azure desde el navegador del lado del cliente en el host local, tengo que agregar a mi paquete.json:
"proxy": "https://xxxxxxx.azurewebsites.net",y acércate con:
fetch("/api/testtrigger")