Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase云函数-从https可调用函数中的上下文获取来源_Firebase_Google Cloud Functions - Fatal编程技术网

Firebase云函数-从https可调用函数中的上下文获取来源

Firebase云函数-从https可调用函数中的上下文获取来源,firebase,google-cloud-functions,Firebase,Google Cloud Functions,我有一个云功能,可以发送一封自定义的电子邮件验证电子邮件,其中包含一个链接,可以重定向回我的网站。我遇到的问题是,当我在本地主机上测试时,重定向URL会转到生产站点。我知道这是预期的行为 有没有一种方法可以使用https可调用函数接收的上下文数据来获取源URL以生成更具体的重定向URL 如果没有得到类型错误:将循环结构转换为JSON错误,我无法对上下文对象进行字符串化,但当我将其记录到控制台时,在firebase控制台的云函数日志中,我会看到JSON对象深处的源URL 控制台中的代码段: hea

我有一个云功能,可以发送一封自定义的电子邮件验证电子邮件,其中包含一个链接,可以重定向回我的网站。我遇到的问题是,当我在本地主机上测试时,重定向URL会转到生产站点。我知道这是预期的行为

有没有一种方法可以使用https可调用函数接收的
上下文
数据来获取源URL以生成更具体的重定向URL

如果没有得到
类型错误:将循环结构转换为JSON
错误,我无法对
上下文
对象进行字符串化,但当我将其记录到控制台时,在firebase控制台的云函数日志中,我会看到JSON对象深处的源URL

控制台中的代码段:

headers: 
      { host: 'us-central1-universal-alert.cloudfunctions.net',
        'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
        'transfer-encoding': 'chunked',
        accept: '*/*',
        'accept-encoding': 'gzip, deflate, br',
        'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,fr;q=0.7',
        authorization: 'Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImZjMmM4YmIyNmE3OGM0M2JkODYzNzA1YjNkNzkyMWI0ZTY0MjVkNTQiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vdW5pdmVyc2FsLWFsZXJ0IiwiYXVkIjoidW5pdmVyc2FsLWFsZXJ0IiwiYXV0aF90aW1lIjoxNTg5MjQ0MDg3LCJ1c2VyX2lkIjoiNjJwaGJmQTRvTVUyT3E5aVpzSm5zZXZNd2hNMiIsInN1YiI6IjYycGhiZkE0b01VMk9xOWlac0puc2V2TXdoTTIiLCJpYXQiOjE1ODkyNDQwODcsImV4cCI6MTU4OTI0NzY4NywiZW1haWwiOiJiZW5yc29tbWVyQGljbG91ZC5jb20iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZW1haWwiOlsiYmVucnNvbW1lckBpY2xvdWQuY29tIl19LCJzaWduX2luX3Byb3ZpZGVyIjoicGFzc3dvcmQifX0.luzWFCR3xr7OmbAp38_qXTlEv800_NMZUBqfa_DfHc5pM9i4CRBr5en3AjzRIjJP2AYF50Z3OE4c7LvnD5VPhEMLmDJcl8xwe_q0uzlMxIIEQdUANui0eFIEK__mFbZS9QmoBwFP4mBa2diuRaZsuUW0rJXkPCzweeiIvJoeGDfGnYnz1KKH1KuDdPKb5sFcHxKCnMCnyr61rDYDEfFbOwDrZBuC94gtrEQtwqb5ruy453CJk0v1wVU8NpbgMhOUvq4AHYCRtNFAqmDDKFNYr1WJTdx3Eqmcn2segocXj-MdQzT5FZtdpxtRad8SKA1FCI03vBYNQDL8rtwFaVFt_A',
        'content-type': 'application/json',
        forwarded: 'for="81.111.170.171";proto=https',
        'function-execution-id': 'b2egqxx6o36z',
        origin: 'http://localhost:3000',
        referer: 'http://localhost:3000/sign-up',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'cross-site',
        'x-appengine-city': 'chesham',
        'x-appengine-citylatlong': '51.709401,-0.612333',
        'x-appengine-country': 'GB',
        'x-appengine-default-version-hostname': 'uc2d66f008c134574p-tp.appspot.com',
        'x-appengine-https': 'on',
        'x-appengine-region': 'eng',
        'x-appengine-request-log-id': '5eb9f0ea00ff0d575c33c56a980001737e7563326436366630303863313334353734702d7470000133646535326134613634643339346235623664653837626165353130396466393a3230000100',
        'x-appengine-user-ip': '81.111.170.171',
        'x-cloud-trace-context': '17c316a639a7d55b4e52ddc72c5ae94f/11631072639755688744',
        'x-forwarded-for': '81.111.170.171',
        'x-forwarded-proto': 'https',
        connection: 'close' },
     rawHeaders: 
      [ 'Host',
        'us-central1-universal-alert.cloudfunctions.net',
        'User-Agent',
        'Mozilla/5.0 (Macintosh
    ```

Is the origin value here guaranteed and reliable? Is there a better way to implement this?

看起来您可以只发送
context.rawRequest.headers.origin的值。无需发送整个对象。

嗨,道格,谢谢你的快速回复。那里的代码片段只是控制台消息的一部分。执行
context.headers.origin
会出错,但
context.rawRequest.headers.origin
对我有效。