شما میتوانید از طریق یک درخواست HTTP با یک کنترلکننده درخواست، یک تابع را فعال کنید. این به شما امکان میدهد تا یک تابع را از طریق متدهای HTTP پشتیبانیشده زیر فراخوانی کنید: GET ، POST ، PUT ، DELETE و OPTIONS .
| گزینه | توضیحات | 
|---|---|
| region | توابع HTTP میتوانند آرایهای از مناطق و همچنین یک منطقه واحد را مشخص کنند. وقتی چندین منطقه مشخص میشوند، برای هر منطقه یک نمونه تابع جداگانه مستقر میشود. | 
| timeoutSeconds(timeout_secبرای پایتون) | توابع HTTP میتوانند تا یک ساعت زمان انقضا تعیین کنند. | 
| cors | توابع HTTP ممکن است سیاستهای CORS را مشخص کنند. میتوانید این را روی trueتنظیم کنید تا به همه مبدأها یا یکstring،regexیاarrayاجازه دهید مبدأهای مجاز را مشخص کنند. اگر به صراحت سیاستهای CORS تنظیم نشده باشند، پیشفرضها روی false/no هستند. | 
 از گزینه cors برای کنترل اینکه کدام مبداها میتوانند به تابع شما دسترسی داشته باشند استفاده کنید. به طور پیشفرض، توابع HTTP دارای پیکربندی CORS نیستند، به این معنی که هرگونه درخواست متقابل به تابع شما منجر به این خطا میشود:
request has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
 همچنین میتوانید با تنظیم گزینه cors روی false برای تابع خود، CORS را به طور صریح غیرفعال کنید.
 برای مجاز کردن برخی از درخواستهای بینمرجعی، اما نه همه آنها، میتوانید فهرستی از دامنههای خاص یا عبارات منظمی که باید مجاز باشند را ارسال کنید. برای مثال، اگر مالک دامنههای firebase.com و flutter.com هستید و firebase.com میتواند زیردامنههای زیادی داشته باشد، میتوانید گزینه cors را برای Node.js روی [/firebase\.com$/, 'https://flutter.com'] یا برای پایتون [r'firebase\.com$', r'https://flutter\.com'] تنظیم کنید: 
const { onRequest } = require("firebase-functions/v2/https");
exports.sayHello = onRequest(
  { cors: [/firebase\.com$/, "https://flutter.com"] },
  (req, res) => {
    res.status(200).send("Hello world!");
  }
);
from firebase_functions import https_fn, options
@https_fn.on_request(
    cors=options.CorsOptions(
        cors_origins=[r"firebase\.com$", r"https://flutter\.com"],
        cors_methods=["get", "post"],
    )
)
def say_hello(req: https_fn.Request) -> https_fn.Response:
    return https_fn.Response("Hello world!")
 اگر تابع شما باید به صورت آزاد در دسترس باشد، مثلاً اگر به یک API عمومی یا وبسایت سرویس میدهد، سیاست cors را روی true تنظیم کنید.
 از کنترلکنندهی درخواست برای پلتفرم خود ( onRequest() یا on_request ) برای ایجاد تابعی که رویدادهای HTTP را مدیریت میکند، استفاده کنید. مثالهای این بخش بر اساس یک نمونهی "سرور زمان" هستند که هنگام ارسال یک درخواست HTTP GET به نقطهی انتهایی توابع، فعال میشود. تابع نمونه، زمان فعلی سرور را بازیابی میکند، زمان را مطابق با پارامتر پرسوجوی URL قالببندی میکند و نتیجه را در پاسخ HTTP ارسال میکند.
شیء درخواست (request object) به شما امکان دسترسی به ویژگیهای درخواست HTTP ارسال شده توسط کلاینت را میدهد و شیء پاسخ (response object) راهی برای ارسال پاسخ به کلاینت فراهم میکند.
exports.date = onRequest( {timeoutSeconds: 1200, region: ["us-west1", "us-east1"]}, (req, res) => { // ... });
@https_fn.on_request(cors=options.CorsOptions(cors_origins="*", cors_methods=["get", "post"]))
def date(req: https_fn.Request) -> https_fn.Response:
    """Get the server's local date and time."""
با استفاده از app به عنوان آرگومان برای کنترلکننده درخواست، میتوانید یک app کامل را به یک تابع HTTP ارسال کنید:
const { onRequest } = require('firebase-functions/v2/https');
const express = require('express');
const app = express();
// Add middleware to authenticate requests
app.use(myMiddleware);
// build multiple CRUD interfaces:
app.get('/:id', (req, res) => res.send(Widgets.getById(req.params.id)));
app.post('/', (req, res) => res.send(Widgets.create()));
app.put('/:id', (req, res) => res.send(Widgets.update(req.params.id, req.body)));
app.delete('/:id', (req, res) => res.send(Widgets.delete(req.params.id)));
app.get('/', (req, res) => res.send(Widgets.list()));
// Expose Express API as a single Cloud Function:
exports.widgets = onRequest(app);
from firebase_admin import initialize_app, db
from firebase_functions import https_fn
import flask
initialize_app()
app = flask.Flask(__name__)
# Build multiple CRUD interfaces:
@app.get("/widgets")
@app.get("/widgets/<id>")
def get_widget(id=None):
    if id is not None:
        return db.reference(f"/widgets/{id}").get()
    else:
        return db.reference("/widgets").get()
@app.post("/widgets")
def add_widget():
    new_widget = flask.request.get_data(as_text=True)
    db.reference("/widgets").push(new_widget)
    return flask.Response(status=201, response="Added widget")
# Expose Flask app as a single Cloud Function:
@https_fn.on_request()
def httpsflaskexample(req: https_fn.Request) -> https_fn.Response:
    with app.request_context(req.environ):
        return app.full_dispatch_request()
پس از استقرار یک تابع HTTP، میتوانید آن را از طریق URL منحصر به فرد خودش فراخوانی کنید. پس از استقرار، از خروجی دقیق URL از CLI استفاده کنید.
 برای مثال، آدرس اینترنتی (URL) برای فراخوانی date() به این شکل است:
https://us-central1-<project-id>.cloudfunctions.net/date
با مسیریابی برنامه Express و Flask، نام تابع به عنوان پیشوند به مسیرهای URL در برنامهای که تعریف میکنید اضافه میشود.
 در مثال تابع date() ، تابع هم پارامتر URL و هم بدنه را برای مقدار format مورد استفاده برای تنظیم فرمت تاریخ/زمان آزمایش میکند: 
let format = req.query.format; format = req.body.format;
format = req.args["format"] if "format" in req.args else None
 پس از بازیابی و قالببندی زمان سرور، تابع date() با ارسال نتیجه در پاسخ HTTP به پایان میرسد: 
 همیشه یک تابع HTTP را با send() ، redirect() یا end() خاتمه دهید. در غیر این صورت، ممکن است تابع شما به اجرا ادامه دهد و به اجبار توسط سیستم خاتمه یابد. همچنین به Sync، Async و Promises مراجعه کنید. 
const formattedDate = moment().format(`${format}`); logger.log("Sending formatted date:", formattedDate); res.status(200).send(formattedDate);
formatted_date = datetime.now().strftime(format)
print(f"Sending Formatted date: {formatted_date}")
return https_fn.Response(formatted_date)
شما میتوانید یک تابع HTTP را به Firebase Hosting متصل کنید. درخواستها در سایت Firebase Hosting شما میتوانند به توابع HTTP خاصی پروکسی شوند. این همچنین به شما امکان میدهد از دامنه سفارشی خود با یک تابع HTTP استفاده کنید. درباره اتصال Cloud Functions به Firebase Hosting بیشتر بدانید.