open google create google-cloud-platform cors google-cloud-functions

google-cloud-platform - create - google storage cors



¿Las funciones de la nube de Google habilitan CORS? (6)

Acabo de terminar el tutorial de Hello World Google Cloud Functions y recibí los siguientes encabezados de respuesta:

Connection → keep-alive Content-Length → 14 Content-Type → text/plain; charset=utf-8 Date → Mon, 29 Feb 2016 07:02:37 GMT Execution-Id → XbT-WC9lXKL-0 Server → nginx

¿Cómo puedo agregar los encabezados de CORS para poder llamar a mi función desde mi sitio web?


Acabo de crear webfunc . Es un servidor HTTP liviano que admite CORS y enrutamiento para Google Cloud Functions. Ejemplo:

const { serveHttp, app } = require(''webfunc'') exports.yourapp = serveHttp([ app.get(''/'', (req, res) => res.status(200).send(''Hello World'')), app.get(''/users/{userId}'', (req, res, params) => res.status(200).send(`Hello user ${params.userId}`)), app.get(''/users/{userId}/document/{docName}'', (req, res, params) => res.status(200).send(`Hello user ${params.userId}. I like your document ${params.docName}`)), ])

En la raíz de su proyecto, simplemente agregue un appconfig.json que se vea así:

{ "headers": { "Access-Control-Allow-Methods": "GET, HEAD, OPTIONS, POST", "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept", "Access-Control-Allow-Origin": "*", "Access-Control-Max-Age": "1296000" } }

Espero que esto ayude.


En el entorno de Python, puede utilizar el objeto de solicitud de matraz para gestionar las solicitudes CORS.

def cors_enabled_function(request): if request.method == ''OPTIONS'': # Allows GET requests from any origin with the Content-Type # header and caches preflight response for an 3600s headers = { ''Access-Control-Allow-Origin'': ''*'', ''Access-Control-Allow-Methods'': ''GET'', ''Access-Control-Allow-Headers'': ''Content-Type'', ''Access-Control-Max-Age'': ''3600'' } return ('''', 204, headers) # Set CORS headers for the main request headers = { ''Access-Control-Allow-Origin'': ''*'' } return (''Hello World!'', 200, headers)

Ver los https://cloud.google.com/functions/docs/writing/http para más.


Puede utilizar el middleware de CORS Express.

paquete.json

npm install express --save npm install cors --save

index.js

''use strict''; const functions = require(''firebase-functions''); const express = require(''express''); const cors = require(''cors'')({origin: true}); const app = express(); app.use(cors); app.get(''*'', (req, res) => { res.send(`Hello, world`); }); exports.hello = functions.https.onRequest(app);



Soy el gerente de producto de Google Cloud Functions. Gracias por tu pregunta, esta ha sido una petición popular.

Todavía no tenemos nada que anunciar, pero somos conscientes de varias mejoras que se deben realizar en las capacidades de invocación HTTP de Cloud Functions y estaremos implementando mejoras en esta y muchas otras áreas en futuras iteraciones.

ACTUALIZAR:

Hemos mejorado la forma en que maneja HTTP en las funciones de la nube. Ahora tiene acceso completo a los objetos de Solicitud / Respuesta HTTP, por lo que puede configurar los encabezados CORS apropiados y responder a las solicitudes de OPCIONES previas al vuelo ( https://cloud.google.com/functions/docs/writing/http )


aquí vamos:

exports.helloWorld = function helloWorld(req, res) { res.set(''Access-Control-Allow-Origin'', "*") res.set(''Access-Control-Allow-Methods'', ''GET, POST'') res.status(200).send(''weeee!); };

entonces puedes jquery / lo que sea como de costumbre:

$.get(myUrl, (r) => console.log(r))